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







概述

在几分钟内建立一个安全的私有Docker注册表来管理所有的Docker映像,同时进行细粒度的访问控制。Artifactory没有任何限制,允许您设置任意数量的Docker注册表,通过使用本地、远程和虚拟Docker存储库,并透明地与Docker客户端一起管理所有Docker映像。无论是内部创建还是从远程Docker资源(如Docker Hub)下载。2022世界杯阿根廷预选赛赛程

多个Docker注册表
Artifactory允许你定义任意数量的Docker注册表。这使您能够在不同的注册表中管理每个项目,并对Docker映像进行更好的访问控制。

自然使用Docker
的相关调用Docker注册API这样你就可以透明地使用Docker客户端通过Artifactory访问图像。


具有细粒度访问控制的安全私有Docker注册表
本地Docker存储库是存储内部Docker映像以便在整个组织中分发的地方。具有内置的细粒度访问控制安全特性, Artifactory提供安全的Docker推送和拉,本地Docker存储库作为功能齐全、安全、私有的Docker注册表。

一致且可靠地访问远程映像
远程Docker存储库在Artifactory代理外部资源,如Docker Hub2022世界杯阿根廷预选赛赛程,或另一个Artifactory实例中的远程Docker存储库,并缓存下载的图像。因此,整体网络减少,并且对这些远程资源上的映像的访问更快、一致和可靠。2022世界杯阿根廷预选赛赛程

OCI支持
Artifactory兼容OCI并支持OCI客户端,使您能够在Docker registry中部署和解析OCI映像。OCI客户端Singularity不支持。

Docker Buildx支持
Artifactory支持Docker Buildx,允许您使用D . builder轻松构建和推送多架构映像 内涵buildx CLI。有关更多信息,请参见使用Docker Buildx CLI批量推送图像

自信地将图像推广到生产
Artifactory让你推广Docker图像,作为不可变的、稳定的二进制文件,通过质量闸门一直到生产。

无限制的Docker Hub访问
Artifactory为您提供无限的高性能访问Docker Hub和Docker官方图像简化云原生应用程序开发,没有Docker Hub映像拉取限制。这让你可以简化、自动化和简化DevOps团队的工作方式。
*适用于SaaS云JFrog平台用户,包括AWS、GCP和Azure上的免费订阅。

注册中心和存储库

Artifactory和Docker都使用术语“存储库”,但使用方式不同。

一个码头工人库带有标记的图像的托管集合是否一起为容器创建文件系统

一个码头工人注册表是存储Docker存储库的主机吗

一个Artifactory库Docker是Docker存储库的一个托管集合,实际上是一个Docker注册表,你可以通过Docker客户端透明地访问它。

因为Artifactory对你可以创建的存储库的数量没有限制,你可以在Artifactory中管理任意数量的Docker注册表。



如何开始使用Artifactory作为Docker注册表

在Artifactory中开始使用Docker有以下几种主要方法:

  1. Artifactory SaaS账号
  2. Artifactory On-Prem

详情请参阅开始使用Artifactory作为Docker注册表


配置Docker存储库

Artifactory在使用Docker时支持三种类型的存储库:

  • 局部存储库是存放内部Docker映像的地方。通过Artifactory的安全功能,这些都是安全的私有Docker注册表。
  • 远程存储库用于代理远程Docker资源,例如Docker Hub。2022世界杯阿根廷预选赛赛程
  • 虚拟存储库可以聚合多个Docker注册表,这样就可以使用一个端点来推送和拉出Docker映像。这使得管理员可以在用户不知情的情况下管理不同的Docker注册表,并继续使用相同的端点。

**如果Docker使用Port方法,请确保进入每个存储库的高级选项卡并设置注册表端口。然后,反向代理生成器应该为指定的端口添加一个新节。

命名Docker存储库时不使用下划线

由于Docker客户端的限制,Docker注册表名称中不允许使用下划线。因此,在命名Artifactory Docker存储库时,不应该使用下划线。例如,Docker客户端将不能与命名为test_docker_repo无论如何使用名为test.docker.repo

本地Docker存储库

本地Docker存储库是您可以部署和托管内部Docker映像的地方。实际上,它是一个Docker注册表,能够承载标记Docker映像的集合,这些映像就是Docker存储库。一旦托管了映像,就可以执行细粒度的访问控制,并通过复制或由其他Artifactory实例中的存储库代理在整个组织中共享它们。

定义一个本地Docker存储库:

  1. 政府模块,选择存储库|存储库|当地的
  2. 点击新建本地存储库并选择码头工人选择包类型对话框。
  3. 设置库的关键,在“Docker Settings”区域,选择V2作为Docker API版本。

  4. 最大唯一标签.这指定了每个存储库应该为Docker映像存储的唯一标记的最大数量。一旦图像的标签数量超过这个数量,旧的标签将被删除。将该字段保留为空(默认值)意味着将存储所有标记。



远程Docker存储库

使用Docker,您可以通过远程存储库代理远程Docker注册表。一个远程存储库在Artifactory中定义的缓存代理,用于在远程URL上管理的注册中心,例如https://registry-1.docker.io/(这是Docker Hub),甚至是由Artifactory的另一个实例在远程站点管理的Docker存储库

从远程存储库请求的Docker映像将按需缓存。您可以从远程存储库缓存中删除下载的映像,但是,您不能手动将Docker映像推送到远程Docker存储库。

防止Docker远程注册表限制所需的操作

代替Docker强制执行的最新Docker远程存储库限制,匿名用户在到达时将被阻止下载速率限制为每6小时100次。为了防止这种情况发生,您需要使用Docker Hub进行身份验证,方法是在您的Docker帐户中设置Docker帐户用户和密码远程Docker存储库

定义一个远程存储库来代理远程Docker注册表,请遵循以下步骤:

  1. 政府模块,选择存储库|存储库|远程
  2. 点击远程存储库并选择码头工人选择包类型对话框。
  3. 在“基本”选项卡中,设置库的关键属性中指定远程注册中心的URLURL字段。
    如果您正在代理Docker Hub,请使用https://registry-1.docker.io/作为URL,并确保启用令牌认证复选框被选中(这些是默认设置)。
  4. 要使用Docker帐户类型,您需要通过在基本Docker存储库中设置您的用户和密码来验证Docker Hub pull请求。
  5. 点击高级选项卡来配置高级Docker存储库设置,你可以启用外部层缓存,允许Artifactory下载外部层到Docker远程存储库。
  6. 选择启用外部层缓存复选框,允许Artifactory将外部层下载到Docker远程存储库。
  7. 当尝试下载外部图层时,您可以通过设置包括模式来匹配外部url,从而应用模式允许列表。

    指定ant风格的路径表达式的允许列表,指定外部层可以从哪里下载。支持的表达式包括(**?).
    缺省情况下,该字段设置为**这意味着外部层可以从任何外部源下载。
    例如,指定“**/”github.com/ * *将只允许下载外部层从github.com宿主

  8. 若要配置网络设置,请参见网络设置
  9. 点击保存并完成

Docker存储库路径和域

当通过Artifactory访问远程Docker存储库时,存储库URL必须加上前缀api /码头工人在路上。

例如:

http://my-remote-site:8081/artifactory/api /码头工人> / <库关键

虚拟Docker仓库

Artifactory支持虚拟Docker库。一个虚拟存储库在Artifactory中定义的聚合来自包括在虚拟存储库中的本地和远程存储库的映像。

这允许您访问本地Docker存储库上托管的映像,以及由远程Docker存储库代理的远程映像,并通过为虚拟存储库定义的单个URL访问所有这些映像。使用虚拟存储库非常有用,因为用户将继续使用虚拟存储库,而管理员可以管理包含的存储库,替换默认部署目标,并且这些更改对用户是透明的。

要定义一个虚拟Docker存储库,请遵循以下步骤:

  1. 政府模块,选择存储库|存储库|虚拟
  2. 点击新的虚拟存储库并选择码头工人选择包类型对话框。
  3. 设置库的关键价值。
  4. 选项中包含的底层本地和远程Docker存储库存储库部分。
  5. 您还可以选择配置您的默认部署存储库这是上传到虚拟存储库的Docker映像将被路由到的存储库,一旦配置好了,您的虚拟Docker存储库就是一个成熟的Docker注册表。使用默认部署存储库,您可以设置虚拟存储库来包装一系列表示管道阶段的存储库,然后促进图像从默认部署存储库通过管道到生产。任何表示此虚拟存储库中管道中的一个阶段的存储库都可以根据需要配置为经过身份验证或未经身份验证(匿名)访问的权限。


解析最新Docker映像

设置虚拟Docker存储库根据Docker映像的修改时间拉出Docker映像,启用根据最新时间戳解析Docker标签.这在两个或多个聚合存储库包含相同标记名的场景。例如,busybox: 1.1

启用后,Artifactory将返回最后部署到虚拟存储库中的一个聚合存储库中的Docker映像,而不是获取虚拟存储库中分辨率顺序较高的映像。Artifactory将首先尝试根据修改时间从本地存储库中获取标签,如果没有找到,它将继续尝试根据分辨率顺序从远程存储库中获取图像。

此功能对于在两个不同实例上创建相同映像的多站点环境非常有用。

REST API

也可以通过设置resolveDockerTagsByTimestamp参数为true(默认为false)时创建一个新的存储库使用REST API。



反向代理设置

Artifactory支持通过反向代理访问Docker注册表子域法或通过端口绑定),或使用直接访问

当通过反向代理访问时,如果您正在使用Artifactory反向代理配置生成器下配置Docker存储库的反向代理设置先进的设置选项卡。详情请参阅Docker反向代理设置


Docker形象推广

Artifactory支持将Docker映像从Artifactory中的一个Docker存储库提升到另一个Docker存储库。

当你需要通过不同的验收和测试阶段移动Docker映像时,提升是有用的,例如,从开发存储库,通过不同的网关一直到生产。使用推广可以确保您的生产环境中的映像是由CI服务器构建并通过所有相关测试的映像,而不是多次重新构建映像。

使用cURL可以使用以下端点触发升级:

POST api/docker//v2/promote {"targetRepo": "", "dockerRepository": "", "tag": "", "targetTag": "", "copy": }

地点:

repoKey 源存储库密钥
targetRepo 要移动或复制的目标存储库
dockerRepository 要提升的docker存储库名称
标签 要提升的可选标记名,如果为空—整个docker存储库将被提升。默认值:最新的
targetTag 新标签,图像应该有后推广,如果你想
复制 当为true时,将提升映像的副本。当为false时,映像被移动到目标存储库

一个提升docker形象的例子jfrog / ubuntu”)所有的标签都来自docker-localdocker-prod使用cURL将是:

curl -i -uadmin:password -X POST "https://artprod.company.com/api/docker//v2/promote" -H "Content-Type: application/json" -d '{"targetRepo":"docker-prod","dockerRepository":"jfrog/ubuntu"}'

https://artprod.company.com/api/docker/< repoKey > / v2 /推广

注意,上面的示例是通过反向代理执行的。要直接通过Artifactory,您将执行以下命令:

curl -i -uadmin:password -X POST "http://localhost:8080/artifactory/api/docker/docker-local/v2/promote" -H "Content-Type: application/json" -d '{"targetRepo":"docker-prod","dockerRepository":"jfrog/ubuntu"}'


属性的特定版本添加重标记jfrog / ubuntu图像(4.9.0)被重新标记到最新的随着它的推广:


curl -i -uadmin:password -X POST "https://artprod.company.com/api/docker/docker-local/v2/promote" -H "Content-Type: application/json" -d '{"targetRepo":"docker-prod","dockerRepository":"jfrog/ubuntu", "tag":" 4.9.0", "targetTag":" latest"}'



推拉图像

给我介绍

得到相应的码头工人推而且码头工人拉任意存储库的命令,转到Artifactory|工件|工件存储库浏览器,在应用程序模块,然后单击给我介绍

码头工人

Podman

将多架构Docker映像推送到Artifactory

JFrog Artifactory支持以下方法将多架构Docker镜像推送到Docker注册表:


逐个推送Docker映像

向后兼容性

要了解Artifactory 7.21.2中标准Docker Pull REST API的功能,请参见使用Docker Build推送多架构Docker映像

你可以使用一个Docker标签来推送多架构的Docker图像。清单列表文件,(Docker的正式名称是the胖清单文件’),它为特定于平台版本的图像引用图像清单。查看更多信息,请单击在这里

推送多架构Docker镜像的过程类似于标准的Docker Push过程,但有一些例外:

  1. 每个体系结构都有一个不同的标签。
  2. 在所有的架构都被构建和推动之后,一个单一的'肥胖清单文件'被创建并包含所有带有相关标签的图像。
  3. 按下按钮后“脂肪清单文件的,图像以给定的标签发布。
$ docker build -t domain/docker/multiarch-image:amd64——build-arg ARCH=amd64/ $ docker push domain/docker/multiarch-image:amd64 $ docker build -t domain_name:port/docker/multiarch-image:arm64——build-arg ARCH=arm64/ $ docker push domain/docker/multiarch-image:arm64 $ docker manifest create \ domain_name:port1/docker/multiarch-image:tag \——modify domain/docker/multiarch-image:amd64 \——modify domain/docker/multiarch-image:arm64 \ $ docker manifest push domain/docker/multiarch-image:my-tag

使用Docker Buildx批量推送图像CLI

从Artifactory 7.21.2,码头工人buildx命令支持,允许您创建和上传Docker '清单列表’到Artifactory中的Docker注册表。码头工人buildx允许您使用单个命令构建和推送多个体系结构映像,而不必分别构建和推送每个体系结构映像。有关更多信息,请参见使用builddx

支持码头工人建造x, Artifactory将图像的每个架构保存在以下带有标签的路径结构下这包括最初发布的标记、图像操作系统和图像体系结构。

imageName: tag-os-arch

下面的例子展示了Docker BuildX API的使用。

Docker buildx build——platform linux/amd64,linux/arm64——tag domain/ Docker /multiarch-image:tag——output=type=image,push=true——push。

使用Docker Build推送多架构Docker映像

从Artifactory 7.21.2及更高版本开始,如果你继续推动多架构Docker映像使用码头工人建造,你推送的所有图片都会被复制,建筑标签会自动添加到每张图片上。

在下面的示例中,使用Docker Build推送以下图像将导致Artifactory自动复制图像和添加linux标签到每个图像。

列表清单
docker.artifactory。< domain_name > /测试/ busybox: 1.33
一个形象
  1. 在构建期间推送映像A。

    docker.artifactory < domain_name > /测试/ busybox: 1.33 amd64


  2. Artifactory复制图像并添加“linux”标签。

    docker.artifactory。< domain_name > /测试/ busybox: 1.33 -linux-amd64
B图像
  1. 在构建期间推送了图像B。

    docker.artifactory。< domain_name > /测试/ busybox: 1.33 s390x
  2. Artifactory复制图像并添加'linux的标签。

    artifactory.us…< domain_name > /测试/ busybox: 1.33 -linux-s390x

浏览Docker存储库

有关如何浏览存储库的一般信息,请参阅浏览Artifactory

码头工人信息TAB显示了三个部分:标签信息Docker标签可视化,标签

标签信息

显示所选标签的基本细节。


标题 Docker标记名。
消化

标签的SHA 256摘要。

总大小 图像的总大小
标签数

附在这个标签上的标签数。

点击标签计数,可在屏幕下方查看所附标签。

Docker标签可视化

本节映射用于生成所选标记的全部命令集以及相应层的摘要。从本质上讲,您将看到使用相同系列的命令码头工人的历史

您可以选择图像的任何图层来查看以下属性。

象征 财产
层ID
图层大小
创建层时的时间戳
创建层的命令

摘要

标签

此部分显示附加到图像的标签。

码头工人的标签

还要注意,Artifactory提取与Docker映像关联的任何标签,并在manifest.json文件,您可以使用它来指定搜索参数,这可以用来轻松地添加额外的元数据到任何图像。



正在搜索Docker图像

可以通过名称、标记或图像摘要搜索Docker图像工件包搜索或者通过REST API


列出Docker映像

Artifactory支持以下与Docker注册表相关的REST API端点:

Artifactory还支持此端点的分页。

属性从缓存中读取ListDockerRepositoriesListDockerTagsREST api,设置artifactory.docker.catalogs.tags.fallback.fetch.remote.cache在artifact . System .properties文件中,系统属性为true(默认为false):

##启用从Docker存储库的缓存中读取#artifactory.docker.catalogs.tags.fallback.fetch.remote.cache=true

需要重新启动Artifactory才能使更改生效。


删除和清理

Artifactory本身支持删除标记和存储库,并符合Docker Hub规范。

删除Docker标记和存储库会自动清除剩下的任何孤立层(未被任何其他标记/存储库使用的层)。

目前Docker客户端不支持DELETE命令,但可以手动触发删除。要使用cURL删除整个Docker存储库,执行以下命令:

curl -u -X DELETE "/ Artifactory //<镜像命名空间>"

或者对于特定的标签版本:

curl -u -X DELETE "/ Artifactory //<图像命名空间>/<标签>"


例如,要删除Ubuntu存储库的最新标签:

//删除"jfrog/ubuntu"库的最新标签curl -uadmin:password -X DELETE "https://artprod.company.com/artifactory/dockerv2-local/jfrog/ubuntu/latest"

空目录

删除存储库或标记后留下的任何空目录将在下一个文件夹修剪作业期间自动删除(默认每5分钟执行一次)。

限制唯一标签

为了避免Docker注册表中由于为一个图像上传了许多快照而造成的混乱和膨胀,请设置最大唯一标签本地Docker存储库配置以限制唯一标记的数量。


Docker构建信息

通过使用JFrog CLI运行Docker构建,你可以在Artifactory中存储详尽的构建信息。

JFrog CLI从您的构建代理收集构建信息,然后将其发布到Artifactory。发布后,构建信息可以在构建浏览器构建

有关使用JFrog CLI集成Docker的更多细节,请参考管理Docker映像请参见《JFrog CLI用户指南》。


从Docker V1迁移到Docker V2

如果你还在使用Docker V1,我们强烈建议你升级到Docker V2。这需要您迁移为Docker V1创建的所有Docker存储库,并通过一个简单的cURL端点完成。

详情请参阅将V1存储库迁移到V2使用Docker V1文档。

使用Docker V1?

本文档介绍如何在Docker V2中使用Artifactory。如果您使用的是Docker V1,请参考使用Docker V1

版权所有©2023 JFrog Ltd。