跳到元数据的末尾
进入元数据的开始

概述

本页提供了一些与Artifactory一起使用Docker的高级主题。

使用自签名SSL证书

可以使用自签名SSL证书码头工人推/拉命令,但是要使其工作,您需要指定——insecure-registry每个不安全注册表的守护进程标志。

详情请参阅码头工人的文档

例如,如果您将Docker作为服务运行,请编辑/etc/default/docker文件,并附加——insecure-registry标记你的注册表URL到DOCKER_OPTS变量,如下例所示:

页面内容

编辑DOCKER_OPTS变量
DOCKER_OPTS = " - h unix: / / / var /运行/码头工人。袜子——insecu-registry artprod.company.com"

需要重新启动Docker服务才能生效。

如果你正在使用Boot2Docker,详情请参阅Boot2Docker文档不安全的注册表

如果您没有对——insecure-registryDaemon标志,你应该得到以下错误:

错误消息
v2 ping尝试失败,错误:获取https://artprod.company.com/v2/: x509:无法验证artprod.company.com的证书,因为它不包含任何IP san

使用自己的证书

Artifactory开箱即用提供的NGINX配置引用了内部捆绑的证书和密钥,你可以用自己的证书和密钥替换它们。

详情请参阅使用自己的证书


手动设置凭证

如果您无法登录Docker,您可能需要手动设置您的凭据。

Docker命令行工具支持使用基本HTTP身份验证对敏感操作(如推送)进行身份验证。

要强制对docker存储库进行身份验证访问,您需要向docker配置文件提供以下参数。

  • Docker端点URL(必须使用HTTPS进行基本身份验证才能工作)
  • 您的Artifactory用户名和密码(已格式化用户名:密码),Base64编码的字符串
  • 你的电邮地址

您可以使用以下命令直接从Artifactory获取这些字符串,并将它们复制/粘贴到~/中.dockercfg文件:

sudo

如果您使用“sudo”或以root用户(例如在安装Docker客户端后)使用Docker命令,请注意Docker配置文件应该放在/root/.dockercfg

直接从Artifactory获取.dockercfg条目

$ curl -uadmin:password "https://artprod.company.com//auth"

“https://artprod.company.com”:{
“auth”:“YWRtaW46QVA1N05OaHZTMnM5Qk02RkR5RjNBVmF4TVFl”,
“邮箱”:“admin@email.com”

Docker配置文件可以为您希望访问的每个注册表包含一个单独的身份验证块。

下面是一个有两个URL端点的例子:

{"https://artprod.company.com": {"auth":"YWRtaW46cGFzc3dvcmQ=", "email":"myemail@email.com"}, "https://artprod2.company.com": {"auth":"YWRtaW46cGFzc3dvcmQ=", "email":"myemail@email.com"}}

通过OAuth进行验证

从4.4版开始,Artifactory通过默认的GitHub OAuth提供程序支持使用OAuth对Docker客户端进行身份验证。当使用OAuth进行身份验证时,您不需要提供额外的凭据来执行码头工人登录Artifactory。

要为Docker客户端设置OAuth身份验证,请执行以下步骤:

  • 一般OAuth设置,确保自动创建人工用户检查,以确保在您第一次使用OAuth登录到Artifactory时创建了用户记录。
  • 使用你的Git企业账号用OAuth登录Artifactory

一旦您通过Git Enterprise OAuth帐户登录到Artifactory, Docker客户端将自动检测并使用OAuth进行身份验证,因此您不需要提供额外的凭据。


Docker Manifest V2 Schema 1弃用

Docker清单V2 Schema 1已弃用从Artifactory版本6.15.0开始,Artifactory默认支持阻塞Schema 1请求。只有最新的Docker映像Docker清单V2 Schema 2支持:

  • 推送请求,用于新的本地存储库。
  • 拉取请求,用于新的远程存储库。

现有的本地和远程存储库继续支持这两种模式。

配置可以在任何时候改变通过REST API(使用blockPushingSchema1标志)或UI。

推送一个新的Docker映像时,确保你使用的是最新的Docker客户端版本,它会自动相应地转换你的映像。Artifactory将继续允许Scheme 1的pull请求。

AQL示例:标识Schema 1 Docker清单

从Artifactory版本6.15,tO与Docker清单V2 Schema 1已弃用, Artifactory默认支持阻塞Schema 1请求。只有最新的Docker映像manifest V2 Schema 2将支持:

  • 推送请求,用于新的本地存储库。
  • 拉取请求,用于新的远程存储库。

可以使用REST API(blockPushingSchema1flag)或从UI中。

将图像从模式1转换为模式2的一种简单方法是使用最近的Docker客户端,拉出图像,然后重新推送.Docker客户端将转换清单格式,但不会更新图像中的内容。

使用AQL识别过时的图像

在远程或本地存储库上运行以下AQL命令。

请求
物品。找到({”和“美元:[{"名称":{" $ eq”:“清单。json "}},{“类型”:“文件”},{“回购”:< REPOSITORY_KEY >},{“@docker.manifest.type”:{" $ ne”:“应用程序/ vnd.docker.distribution.manifest.v2 + json”}}})其中包括(“回购”、“路径”、“@docker.manifest”、“@docker.repoName”)
响应
房地产@docker。repoName是属性@docker。manifest是

对于远程存储库,该查询将指示是否需要清理缓存。

对于本地存储库,转换通过运行找到的过时映像码头工人拉而且码头工人推

docker pull/push /:
  • 没有标签