云客户?
开始免费>
升级MyJFrog >
云有什么新鲜事>





概述

在Artifactory中使用Docker主要有以下几种方式:

Artifactory云

最简单的方法是Artifactory云帐户。在这种模式下,因为Artifactory是一个托管服务,所以不需要设置反向代理,可以创建Docker存储库并开始推送和拖动Docker映像。从Artifactory Cloud >开始

Artifactory自托管

设置Artifactory Pro的自托管安装以与Docker一起工作。Docker客户机要求每个注册中心使用不同的主机名。无论您是否使用反向代理,Artifactory都支持这一点。开始与Artifactory Pro On-Prem >

Artifactory部署最佳实践

JFrog推荐的最佳实践是使用EC2或基于容器的部署(ECS/EKS)来部署Artifactory。目前不建议使用AWS Fargate。

页面内容

集成的好处

从Artifactory Cloud开始

使用Docker存储库Artifactory云又快又容易。W在Artifactory Cloud中,您使用Artifactory作为托管服务,不需要使用反向代理配置Artifactory。

本节最后的示例展示了创建Docker存储库、登录、提取图像和推送图像的完整过程。

使用Docker客户端与Artifactory云


要将Docker客户端与Artifactory云Docker存储库一起使用,可以使用本机Docker客户端登录到每个Docker存储库,拉出和推送图像。

  • 使用以下命令和Artifactory Cloud凭据登录到存储库。

    码头工人登录${服务器名称}.jfrog.io
  • 使用以下命令提取图像。

    码头工人将${服务器名称}.jfrog。io / {repo-name} / <图像名称>
  • 先给图片加标签,然后使用Push命令来推送图片。

    Docker标签<镜像名称> ${server-name}.jfrog. Docker标签<镜像名称> ${server-name}. j青蛙。io / {repo-name} / <图像名称>docker push ${server-name}.jfrog.io/{repo-name}/

测试你的设置

下面的例子演示了以下场景:

  • hello world码头工人形象
  • 登录到虚拟Docker存储库
  • 重新贴标签的hello world映像,然后将其推入您的虚拟Docker存储库

在本例中,Artifactory云服务器的名称为acme


  1. 首先创建一个虚拟码头工人库被称为dockerv2-virtual
  2. hello world图像

    码头工人拉hello world
  3. 登录存储库dockerv2-virtual

    码头工人登录acme-dockerv2-virtual.jfrog.io
  4. 标签的hello world图像

    acme-dockerv2-virtual.jfrog.io/hello-world
  5. 把标记hello world图像dockerv2-virtual

    码头工人推acme-dockerv2-virtual.jfrog.io / hello world

Artifactory Pro On-Prem入门

Docker客户端有以下两个限制:

  1. 在提供注册表路径时,不能使用上下文路径localhost: 8082 / artifactory是无效的)
  2. 当针对HTTPS主机或使用不安全的注册表国旗

Artifactory为这些限制提供了解决方案,允许您创建和使用任意数量的Docker注册表。

  • 使用反向代理
    当使用反向代理时,它将Docker命令映射到Artifactory中的多个Docker注册中心之一
  • 没有反向代理
    从5.8版本开始,Artifactory支持使用Docker,而无需使用反向代理,允许您在Artifactory中创建和使用多个Docker注册表。

使用反向代理


与反向代理一起使用Artifactory时,您需要将Docker命令映射到Artifactory中的Docker注册表子域法端口的方法库路径方法

测试或评估?

如果您目前只使用Artifactory和Docker进行测试或评估,我们建议您这样做将Artifactory作为Docker容器运行它很容易安装,并带有一个代理服务器和预先配置的开箱即用的Docker注册表。你可以在几分钟内启动并运行。

Docker的反向代理

使用ports方法,端口号被映射到每个Artifactory Docker注册表。虽然这是一种简单的入门方法,但是您需要修改反向代理配置,并为在Artifactory中定义的每个新的Docker注册表添加一个新的映射。此外,您的IT部门的防火墙和其他限制可能会限制端口号,使端口方法不可行。

使用子域方法,您只需要配置一次反向代理,从那时起,Artifactory中从Docker命令到Docker注册表的映射是动态的,不需要进一步修改反向代理配置。

存储库路径方法允许单一入口点(URL)访问不同的存储库。这是通过将被访问的存储库的名称嵌入到映像路径来实现的。

如果通配符证书可用,我们建议使用子域方法,因为它只需要一次性的努力,并且更紧密地遵循Docker约定。

子域法

使用子域方法开始安装Docker和on-prem Artifactory Pro涉及四个基本步骤:

  1. 配置Artifactory

  2. 配置反向代理

  3. 配置Docker客户端

  4. 测试您的设置

配置Artifactory

To使用子域方法配置Artifactory和反向代理,执行以下步骤:

  1. 确保Artifactory是启动和运行,是使用有效的license激活
  2. 创建您的虚拟码头工人库(以及它应该聚合的本地和远程Docker存储库)。在下面的示例中,我们将使用一个名为docker-virtual
  3. 确保反向代理服务器已启动并正在运行。
  4. 获得一个通配符SSL证书或使用通配符自签名证书。要创建自签名证书,请按照以下步骤操作Ubuntu的这些说明

    请确保您的证书与Artifactory主机名在反向代理配置中使用。在下面的例子中,我们将使用art.local

配置反向代理

Artifactory可以为支持的服务器生成完整的反向代理配置文件。

反向代理配置生成器并根据您的反向代理如何设置填写字段,同时确保:

  1. 使用正确的Artifactory主机名公共服务器名称字段(在我们的示例中将是art.local
  2. 选择子域名随着反向代理的方法Docker反向代理设置

Nginx

方法生成的代码段配置发电机到你的artifactory-nginx.conf文件,并把它放在你的/etc/nginx/sites-available目录中。
创建下面的符号链接。

Sudo ln -s /etc/nginx/sites-available/artifactory-nginx.conf /etc/nginx/sites-enabled/artifactory-nginx.conf

Apache HTTPD

方法生成的代码段配置发电机到你的artifactory-apache.conf把它归档,放在你的/etc/apache2/sites-available目录中。

创建以下符号链接:

Sudo ln -s /etc/apache2/sites-available/artifactory-apache.conf /etc/apache2/sites-enabled/artifactory-apache.conf

httpd . conf头文件应该调优以使用这些值正确工作,以避免错误:

定义APACHE_LIB_DIR /usr/lib/apache2/modules <---- Input fied in UI could be great # Apache Logs(默认:在其他Artifactory日志的旁边)定义APACHE_LOG_DIR /[TheArtifactoryHome]/ Logs <---- ErrorLog/CustomLog could be unannotated & Input fied in UI could be great LoadModule proxy_module ${APACHE_LIB_DIR}/mod_proxy. properties。因此LoadModule rewrite_module ${APACHE_LIB_DIR}/mod_rewrite. so因此LoadModule proxy_ajp_module ${APACHE_LIB_DIR}/mod_proxy_ajp. so因此LoadModule proxy_http_module ${APACHE_LIB_DIR}/mod_proxy_http. so LoadModule proxy_http_module ${APACHE_LIB_DIR}/因此LoadModule ssl_module ${APACHE_LIB_DIR}/mod_ssl. soso <----仅当HTTPS使用监听443 <----仅当HTTPS使用监听XXX <——所有端口用作Docker注册表
配置Docker客户端

要配置Docker客户端,请执行以下步骤

  1. 将以下内容添加到您的DNS或客户端的DNS中设置文件:

    < ip地址> docker-virtual.art.local
  2. 由于该证书是自签名的,因此需要将其导入Docker证书信任存储库码头工人的文档.或者,可以将Docker客户机配置为使用不安全注册表码头工人的文档


  3. 重新启动Docker守护进程/引擎以应用不安全注册表标志(如果导入了自签名证书,则不需要重新启动Docker守护进程/引擎)。

测试你的设置

要验证反向代理是否正确配置,请运行以下命令,确保返回码为200:

curl -I -k -v https:///api/system/ping . html

运行以下命令,以确保您的代理配置是有效的,并且可以与Artifactory通信:

  • 拉出“hello-world”图像

    码头工人拉hello world
  • 登录到存储库docker-virtual

    码头工人登录docker-virtual.art.local
  • 标记“hello-world”图像

    Docker标签hello-world Docker -virtual.art.local/hello-world
  • 将标记的“hello-world”图像推到docker-virtual

    码头工人推docker-virtual.art.local / hello world

存储库路径方法

使用路径方法开始安装Docker和on-prem Artifactory Pro涉及四个基本步骤:

  1. 配置Artifactory

  2. 配置反向代理

  3. 配置Docker客户端

  4. 测试您的设置

配置Artifactory

To使用path方法配置Artifactory和反向代理,执行以下步骤:

  1. 确保Artifactory是启动和运行,是使用有效的license激活
  2. 创建您的虚拟码头工人存储库(以及它应该聚合的本地和远程Docker存储库)。在下面的示例中,我们将使用一个名为docker-virtual
  3. 确保反向代理服务器已启动并正在运行。
  4. 请获取有效的SSL证书或使用自签名证书。要创建自签名证书,请按照以下步骤操作Ubuntu的这些说明

    请确保您的证书与Artifactory主机名在反向代理配置中使用。在下面的例子中,我们将使用art.local

配置反向代理

Artifactory可以为支持的服务器生成完整的反向代理配置文件。

反向代理配置生成器并根据您的反向代理如何设置填写字段,同时确保:

  1. 使用正确的Artifactory主机名公共服务器名称字段(在我们的示例中将是art.local
  2. 选择库路径随着反向代理的方法Docker反向代理设置

Nginx
方法生成的代码段配置发电机到你的artifactory-nginx.conf文件,并把它放在你的/etc/nginx/sites-available目录中。
创建下面的符号链接。

Sudo ln -s /etc/nginx/sites-available/artifactory-nginx.conf /etc/nginx/sites-enabled/artifactory-nginx.conf

Apache HTTPD

方法生成的代码段配置发电机到你的artifactory-apache.conf把它归档,放在你的/etc/apache2/sites-available目录中。

创建以下符号链接:

Sudo ln -s /etc/apache2/sites-available/artifactory-apache.conf /etc/apache2/sites-enabled/artifactory-apache.conf
配置Docker客户端

要配置Docker客户端,请执行以下步骤

  1. 将以下内容添加到您的DNS或客户端的DNS中设置文件:

    < ip地址> art.local
  2. 由于该证书是自签名的,因此需要将其导入Docker证书信任存储库码头工人的文档.或者,可以将Docker客户机配置为使用不安全注册表码头工人的文档


  3. 重新启动Docker守护进程/引擎以应用不安全注册表标志(如果导入了自签名证书,则不需要重新启动Docker守护进程/引擎)。

测试你的设置

要验证反向代理是否正确配置,请运行以下命令,确保返回码为200:

curl -I -k -v https:///api/system/ping . html

运行以下命令,以确保您的代理配置是有效的,并且可以与Artifactory通信:

  • 拉出“hello-world”图像

    码头工人拉hello world
  • 登录到存储库docker-virtual

    码头工人登录art.local
  • 标记“hello-world”图像

    Docker标签hello-world art.local/ Docker -virtual/hello-world
  • 将标记的“hello-world”图像推到docker-virtual

    码头工人推art.local / docker-virtual / hello world

端口的方法

使用ports方法开始安装Docker和on-prem Artifactory Pro涉及两个基本步骤:

  1. 配置Artifactory和反向代理

  2. 配置Docker客户端

配置Artifactory和反向代理

要使用ports方法配置Artifactory和反向代理,请执行以下步骤:

  1. 确保Artifactory是启动和运行,并使用有效的license激活。
  2. 创建您的虚拟码头工人注册表(以及它应该聚合的本地和远程Docker存储库)。在下面的示例中,我们将使用一个名为docker-virtual
  3. 确保反向代理服务器已启动并正在运行。
  4. 获取SSL证书或使用本例中生成的自签名证书。

    请确保您的证书与Artifactory主机名在反向代理配置中使用。在下面的例子中,我们将使用art.local

  5. 配置反向代理。Artifactory的反向代理配置生成器可以为支持的服务器生成完整的反向代理配置文件。所有你需要做的是填写字段根据你的反向代理是如何设置的,同时确保:
    1. 使用正确的Artifactory主机名公共服务器名称
    2. 选择港口随着反向代理的方法Docker反向代理设置.在下面的例子中,我们将使用port5001绑定库docker-virtual
    NGINX

    Artifactory要与Docker一起工作,首选的web服务器是NGINX v1.3.9及以上。
    首先,您需要为NGINX创建一个自签名证书就像这里描述的Ubuntu
    然后使用Artifactory的反向代理配置生成器为您生成配置代码片段。
    将代码段复制到artifactory-nginx.conf把它归档,放在你的/etc/nginx/sites-available目录中。
    最后,创建下面的符号链接:

    Sudo ln -s /etc/nginx/sites-available/artifactory-nginx.conf /etc/nginx/sites-enabled/artifactory-nginx.conf

    Apache HTTPD

    安装Apache HTTP服务器作为反向代理然后安装需要的模块

    创建以下符号链接:

    Sudo ln -s /etc/apache2/mods-available/slotmem_shm. txt负载/etc/apache2/mods-enabled / slotmem_shm.load

    类似地,创建相应的符号链接:

    • proxy_balancer
    • proxy_load
    • proxy_http
    • proxy_connect
    • proxy_html
    • rewrite.load
    • ssl.load
    • lbmethod_byrequests.load

    然后使用Artifactory的反向代理配置生成器为您生成配置代码片段。
    将代码段复制到artifactory.conf把它归档,放在你的/etc/apache2/sites-available目录中。
    HAProxy

    首先,您需要为HAProxy创建一个自签名证书就像这里描述的Ubuntu

    然后,将下面的代码片段复制到您的/etc/haproxy/haproxy.cfg文件。按照代码片段中描述的那样编辑文件之后,您可以使用以下命令测试您的配置:

    Haproxy -f /etc/haproxy/haproxy.cfg
    HAProxy v1.5配置
    # haproxy服务器配置#版本1.0 #历史# --------------------------------------------------------------------------- #此配置启用的功能# HA配置#端口80,443 Artifactory GUI/API # #使用端口来区分Artifactory docker存储库#端口443 docker-virtual (v2) docker v1被重定向到docker-dev-local。#端口5001 - doc -local (v1);docker- prodp -local2 (v2) # port 5002;docker-dev-local2 (v2) # #在<…> # 1。证书和密钥# 2。如果需要artifactory-host # 3取代端口号  # ---------------------------------------------------------------------------- 全球日志127.0.0.1 local0 chroot /var/lib/haproxy maxconn 4096用户haproxy组haproxy守护进程tune.ssl.default-dh-param haproxy 2048数据套接字/运行/ / admin。Sock模式660 level admin默认日志全局模式HTTP选项httplog option dontlogull option redispatch option forforoption HTTP -server-close maxconn 4000 timeout connect 5000 timeout client 50000 timeout server 50000 errorfile 400 /etc/haproxy/errors/400. Sock模式660 level admin默认日志全局模式HTTP选项httplog option dontlogull option redispatch option forforoptionHTTP错误文件403 /etc/haproxy/errors/403.HTTP错误文件408 /etc/haproxy/errors/408。HTTP错误文件500 /etc/haproxy/errors/500。HTTP错误文件502 /etc/haproxy/errors/502.使用实例HTTP错误文件503 /etc/haproxy/errors/503HTTP错误文件504 /etc/haproxy/errors/504HTTP前端正常绑定*:80 bind *:443 SSL CRT  mode http option forwardfor reqirep ^([^\:]*)\ /v2(.*$) \1\ /artifactory/api/docker/docker-virtual/v2\2 reqadd x - forward - proto:\ https if {ssl_fc} option forwardfor header X-Real-IP default_backend normal #如果只需要访问docker-dev-local2则跳过本节。Docker-virtual可以配置为部署到docker-dev-local2 front dockerhub bind *:5000 ssl crt  mode http option forwardfor option forwardfor header X-Real-IP reqirep ^([^\:]*)\ /v2(.*$) \1\ /artifactory/api/docker/docker-remote/v2\2 reqadd x - forward - proto:\ https if {ssl_fc} default_backend normal #如果只需要访问docker-dev-local2则跳过本节。 Docker-virtual can be configured to deploy to docker-dev-local2 frontend dockerprod bind *:5001 ssl crt  mode http option forwardfor option forwardfor header X-Real-IP reqirep ^([^\ :]*)\ /v1(.*$) \1\ /artifactory/api/docker/docker-prod-local/v1\2 reqirep ^([^\ :]*)\ /v2(.*$) \1\ /artifactory/api/docker/docker-prod-local2/v2\2 reqadd X-Forwarded-Proto:\ https if { ssl_fc } default_backend normal # if only need to access the docker-dev-local2 then skip this section. Docker-virtual can be configured to deploy to docker-dev-local2 frontend dockerdev bind *:5002 ssl crt  mode http option forwardfor option forwardfor header X-Real-IP reqirep ^([^\ :]*)\ /v1(.*$) \1\ /artifactory/api/docker/docker-dev-local/v1\2 reqirep ^([^\ :]*)\ /v2(.*$) \1\ /artifactory/api/docker/docker-dev-local2/v2\2 reqadd X-Forwarded-Proto:\ https if { ssl_fc } default_backend normal # Artifactory Non HA Configuration # i.e server artifactory 198.168.1.206:8082 # backend normal mode http server  : # # Artifactory HA Configuration # Using default failover interval - rise = 2; fall =3 3; interval - 2 seconds # backend normal # mode http # balance roundrobin # option httpchk OPTIONS / # option forwardfor # option http-server-close # appsession JSESSIONID len 52 timeout 3h # server  : # server  :
配置Docker客户端

要配置Docker客户端,请执行以下步骤

  1. 将以下内容添加到您的DNS或客户端的DNS中设置文件:

    < ip地址> art.local
  2. 由于该证书是自签名的,因此需要将其导入Docker证书信任存储库码头工人的文档.或者,您可以将Docker客户机配置为使用不安全注册表,方法是将以下行添加到您的/etc/default/docker文件(如果文件不存在,你可能需要创建它):

    DOCKER_OPTS = " $ DOCKER_OPTS——insecure-registry art.local: 5001”
  3. 重新启动Docker引擎。

测试你的设置

使用实例验证反向代理配置是否正确,运行以下命令:

//确认返回码200 curl -I -k -v https:///api/system/ping

运行以下命令以确保您的代理配置是有效的,并且可以与Artifactory通信。在这个例子中,我们将下拉一个Docker映像,标记它,然后将它部署到我们的docker-virtual绑定到的存储库端口5001

//拉出"hello-world"图像docker Pull hello-world //登录到存储库docker-virtual docker Login art-local:5001/ /标记"hello-world"图像docker标签hello-world art-local:5001/hello-world //将标记好的"hello-world"图像推到docker-virtual docker Push art-local:5001/hello-world
使用自签名证书进行测试
  1. 由于该证书是自签名的,因此需要将其导入Docker证书信任存储库码头工人的文档.或者,可以将Docker客户机配置为使用不安全注册表码头工人的文档

  2. 重新启动Docker守护进程/引擎以应用不安全注册表标志(如果导入了自签名证书,则不需要重新启动Docker守护进程/引擎)。
    运行美元的码头工人信息将列出已在非安全注册表项下应用的非安全注册表。

  3. 使用上面的步骤与Artifactory Docker Registry交互

没有反向代理

以前,在使用反向代理时,Artifactory支持上面描述的端口和子域方法。从5.8版。Artifactory引入了一种称为“存储库路径”方法的新方法,因为它使用了Docker存储库路径前缀(< REPOSITORY_KEY /图片>)从Docker客户端访问特定的Artifactory Docker注册表。注意,由于其他原因,您可能仍然为Artifactory配置了一个反向代理,但是当配置为使用Repository Path方法时,对Artifactory中的Docker注册表的请求将由Artifactory的嵌入式Tomcat处理,而不是反向代理。

需要Docker API v2

您只能在为Docker API v2配置的Artifactory Docker注册表中使用Repository Path方法。

建议在生产中使用子域方法

我们建议使用子域法,因为此方法允许您在反向代理上添加通配符SSL证书,以安全访问码头工人注册表
虽然可以在Tomcat级别添加SSL证书,但不建议这样做,因为根据证书进行验证的过程占用大量内存和CPU资源。
当不需要安全访问时,Repository Path方法更适合。

配置Artifactory

要配置Artifactory使用Repository Path方法,请执行以下步骤:

  1. 确保Artifactory是启动和运行,并使用有效的license激活。

  2. 创建您的虚拟码头工人库(以及它应该聚合的本地和远程Docker存储库)。在下面的示例中,我们将使用一个名为docker-virtual
  3. HTTP的设置页面的政府模块下Artifactory |常规| HTTP设置
    码头工人设置面板中,选择库路径作为Docker访问方法。
    反向代理设置面板中选择嵌入式Tomcat随着服务器提供程序(这表示您没有使用反向代理)。

    您必须使用嵌入式Tomcat

    通过使用内部嵌入式Tomcat,您只能将Artifactory用作Docker注册中心,而不需要反向代理。


配置Docker客户端

使用Repository Path方法,您可以使用Artifactory作为Docker注册中心,而不需要在不安全的连接上使用反向代理(即只支持HTTP,不支持HTTPS)。您需要配置Docker客户机以使用不安全的注册中心正如在码头工人的文档

重新启动Docker守护进程/引擎以应用不安全注册表标志(如果导入了自签名证书,则不需要重新启动Docker守护进程/引擎)。运行美元的码头工人信息将列出已在非安全注册表项下应用的非安全注册表。

测试你的设置

不要使用localhost、127.0.0.1或"/artifactory"

由于Docker客户端的限制,您不能以localhost或127.0.0.1.如果您需要访问Artifactory的本地安装,请确保指定它的完整IP地址。

此外,在指定Artifactory的URL时,您应该省略/ artifactory后缀通常使用。

例如,如果您本地机器的IP地址是10.1.16.114,那么您必须将Artifactory URL指定为http://10.1.16.114:8082(使用http://localhost: 8082不会工作)。

下面的代码片段假设您有一个名为docker-virtual在IP 10.1.16.114的Artifactory安装中。

首先,您应该通过运行以下命令来验证Docker客户机是否可以访问Artifactory。确保返回码是200:

curl -I -k -v http://10.1.16.114:8082/artifactory/api/system/ping

现在可以继续测试Docker注册表。

  • 登录到Artifactory作为您的Docker注册表

    Docker login -u admin -p password 10.1.16.114:8082
  • hello world图像从docker-virtual存储库

    码头工人拉10.1.16.114:8082 docker-virtual / hello world:最新
  • 标记Docker映像

    Docker tag 10.1.16.114:8082/ Docker -virtual/hello-world:latest 10.1.16.114:8082/ Docker -virtual/ . txt
  • 将标记的图像推到docker-virtual

    码头工人推10.1.16.114:8082 / docker-virtual / < tag_name >
  • 没有标签
版权所有©2022 JFrog有限公司