知方号

知方号

如何使用 Docker CLI 登录到 Docker Hub 和私有注册表<注册表命令号怎么填写才正确呢>

如何使用 Docker CLI 登录到 Docker Hub 和私有注册表

全新的 Docker 安装默认与 Docker Hub 进行公共交互。登录后您可以访问您的私人内容并从限制较少的 Docker API 速率限制中受益。

在本指南中,我们将展示如何登录 Docker CLI,涵盖 Docker Hub 身份验证和您自己的私有注册表。我们还将研究 Docker 凭证存储的一些常见问题。

登录到 Docker Hub

登录到 Docker Hub 可以让 Docker CLI 访问您的帐户可以访问的私有内容。它还将为您提供更高的速率限制阈值,即每六小时 200 次图像拉取,而不是向未经身份验证的客户端提供的每六小时 100 次拉取。

使用 docker login 命令提供您的凭据并向服务器进行身份验证:

$ docker loginUsername: Password:

系统将提示您以交互方式输入用户名和密码。 Docker 将尝试使用凭据登录到 Docker Hub。如果详细信息被接受,您将看到 Login Succeeded。 Docker 会将颁发的身份验证令牌存储在您的 .docker/config.json 文件中。

$ docker loginLogin Succeeded2FA 登录的访问令牌

启用双因素身份验证的 Docker Hub 帐户需要使用访问令牌而不是密码。使用 Docker Hub 的 Web UI,单击右上角的个人资料图标,然后从菜单中选择“帐户设置”。使用左侧边栏切换到“安全”选项卡。

单击蓝色的“新建访问令牌”按钮以创建个人访问令牌。请注意记下显示的令牌密钥,因为您以后将无法恢复它。当您在 CLI 中运行 docker login 时,请使用此令牌而不是您的常规密码。

非交互式登录

您可以提供您的用户名和密码作为命令行标志:

$ docker login --username demo --password example

当您以编程方式登录或作为 CI 管道的一部分时,这很有用。为了提高安全性,请使用 --password-stdin 标志指示 Docker 从 STDIN 读取您的密码。这使您可以通过管道输入密码文件,从而防止在 shell 历史记录和 CI 作业日志中捕获纯文本。

$ cat password.txt | docker login --username demo --password-stdin登录私人注册中心

docker login 还允许您登录到自托管注册表。提供注册表的主机名和端口作为命令的第一个参数。当没有给出参数时,总是使用 Docker Hub。

$ docker login registry.example.comUsername: Password:

在使用自定义注册表时,您仍然可以使用 --username、--password 和 --password-stdin 标志。您可以同时登录多个注册表——根据需要多次重复 docker login 命令。

手动添加凭据

有时您可能希望通过将现有身份验证令牌添加到 Docker 的配置文件来手动登录注册表。这在 CI 环境中很有用,在这种环境中,您希望提供预先获得的令牌作为管道变量。

您可以通过编辑 .docker/config.json 文件自行添加身份验证令牌。在文件顶部的 auths 字段中为您的注册表添加一个新密钥。提供一个对象作为键的值;此对象需要一个包含您的令牌的 auth 属性。以下是 registry.example.com 注册表的示例:

{ "auths": { "registry.example.com": { "auth": "aWxtaW9ud..." } }}

您可以使用 https://index.docker.io/v1/ 作为注册表 URL 添加 Docker Hub 令牌。

一个注册表的多个帐户

身份验证机制的一个重要限制是它要求注册表与用户帐户一对一映射。在同一注册表中同时登录多个用户是不可能的。当您使用将权限分离到项目或团队中的私有注册表时,这通常是可取的。

您可以通过将凭据拆分为多个配置文件来缓解此问题。 Docker CLI 使用 --config 标志或 DOCKER_CONFIG 环境变量来确定每次调用要加载的文件。

# Authenticate as user-1$ docker --config ~/docker/user-1.conf login registry.example.com --username user-1 --password foobar# Authenticate as user-2$ docker --config ~/docker/user-2.conf login registry.example.com --username user-2 --password foobar# Pull an image from registry.example.com as user-1$ docker --config ~/docker/user-1.conf pull my-team/my-project:latest# Push an image to registry.example.com as user-2$ docker --config ~/docker/user-2.conf push my-team/my-project:latest

当您有许多项目要处理时,您可以使用 shell 别名或函数将 docker 重写为一个命令,该命令会自动为您的工作目录选择正确的配置文件。

alias docker="docker --config ~/docker/$(basename $PWD).conf $1"凭证助手

默认情况下,Docker 将您的凭据不安全地存储在 ~/.docker/config.json 中。您可以通过集成凭证助手实用程序来增加

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至lizi9903@foxmail.com举报,一经查实,本站将立刻删除。