跳到元数据的末尾
转到元数据的开始

概述

这个页面提供了一些使用Docker和Artifactory的高级主题。

使用自签名SSL证书

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

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

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

页面内容

编辑DOCKER_OPTS变量
DOCKER_OPTS = " - h unix: / / / var /运行/码头工人。袜子——不安全的注册artprod.company.com”

要使其生效,需要重新启动Docker服务。

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

如果您不进行所需的修改——insecure-registryDaemon标志,你应该得到以下错误:

错误消息
获取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配置文件应该放在/root/.dockercfg

直接从Artifactory获取.dockercfg条目

$ curl -uadmin:password "https://artprod.company.com//auth"
{
"https://artprod.company.com": {
"auth": "YWRtaW46QVA1N05OaHZTMnM5Qk02RkR5RjNBVmF4TVFl",
"email": "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 Enterprise帐户使用OAuth登录Artifactory

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


Docker Manifest V2 Schema 1已弃用

为了与Docker manifest V2 Schema 1的弃用从Artifactory版本6.15.0开始,Artifactory默认支持阻塞Schema 1请求。只有最新的Docker镜像Docker manifest V2 Schema 2支持以下功能:

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

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

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

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

AQL示例:识别Schema 1 Docker清单

从Artifactory版本6.15开始与…对齐Docker manifest V2 Schema 1的弃用默认情况下,Artifactory支持阻塞Schema 1请求。只有最新的Docker镜像清单V2架构2将支持以下情况:

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

可以使用REST API(blockPushingSchema1标志)或从UI内。

将图像从schema1转换为schema2的一种简单方法是使用最新的Docker客户端,拉出镜像,然后重新推送。Docker客户端将转换manifest格式,但不会更新映像中的内容。

使用AQL识别过时的图像

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

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

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

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

docker pull/push /:
  • 没有标签