码头登录
描述 | 登录注册表 |
---|---|
用法 | docker login [OPTIONS] [SERVER] |
描述
登录到注册表。
选项
选项 | 默认 | 描述 |
---|---|---|
-p, --password | 密码 | |
--password-stdin | 从 stdin 获取密码 | |
-u, --username | 用户名 |
例子
登录自托管注册表
如果您想登录自托管注册表,可以通过添加服务器名称来指定。
$ docker login localhost:8080
使用 STDIN 提供密码 (--password-stdin)
docker login
要以非交互方式
运行该命令,您可以设置--password-stdin
标志以通过 提供密码STDIN
。使用
STDIN
可防止密码出现在 shell 历史记录或日志文件中。
以下示例从文件中读取密码,并
docker login
使用以下命令将其传递给命令STDIN
:
$ cat ~/my_password.txt | docker login --username foo --password-stdin
特权用户要求
docker login
要求您使用sudo
或 be root
,除非:
- 连接到远程守护程序,例如
docker-machine
预配置的docker engine
. - 用户已添加到
docker
组中。这将影响您系统的安全;群docker
是root
等价的。有关详细信息,请参阅 Docker 守护进程攻击面。
您可以登录到您拥有凭据的任何公共或私人存储库。当您登录时,该命令将
通过下述过程将凭据存储在$HOME/.docker/config.json
Linux 或Windows 上。%USERPROFILE%/.docker/config.json
凭证存储
Docker 引擎可以将用户凭据保存在外部凭据存储中,例如操作系统的本机钥匙串。使用外部存储比在 Docker 配置文件中存储凭据更安全。
要使用凭证存储,您需要一个外部帮助程序来与特定钥匙串或外部存储进行交互。 Docker 要求帮助程序位于客户端主机中$PATH
。
docker-credential-helpers
您可以从发布页面下载帮助程序。助手可用于以下凭证存储:
- D-Bus 特勤局
- 苹果 macOS 钥匙扣
- Microsoft Windows 凭据管理器
- 经过
配置凭证存储
您需要指定凭证存储来$HOME/.docker/config.json
告诉 Docker 引擎使用它。 config 属性的值应该是要使用的程序的后缀(即 后面的所有内容docker-credential-
)。例如,要使用docker-credential-osxkeychain
:
{
"credsStore": "osxkeychain"
}
如果您当前已登录,请运行docker logout
以从文件中删除凭据,然后docker login
再次运行。
默认行为
默认情况下,Docker 在每个平台上查找本机二进制文件,即 macOS 上的“osxkeychain”、Windows 上的“wincred”以及 Linux 上的“pass”。一个特殊情况是,在 Linux 上,如果 Docker 找不到“pass”二进制文件,它将回退到“secretservice”二进制文件。如果这些二进制文件都不存在,它将以 Base64 编码将凭据(即密码)存储在上述配置文件中。
凭证辅助协议
凭证助手可以是遵循非常简单协议的任何程序或脚本。该协议深受 Git 的启发,但在共享信息方面有所不同。
帮助程序始终使用命令中的第一个参数来标识操作。该参数只有三个可能的值:store
、get
和erase
。
该store
命令从标准输入中获取 JSON 有效负载。该有效负载携带服务器地址,以识别凭证、用户名以及密码或身份令牌。
{
"ServerURL": "https://index.docker.io/v1",
"Username": "david",
"Secret": "passw0rd1"
}
如果存储的秘密是身份令牌,则用户名应设置为
<token>
。
该store
命令可以写入错误消息,STDOUT
如果存在问题,Docker 引擎将显示该错误消息。
该get
命令从标准输入中获取字符串有效负载。该有效负载携带 Docker 引擎需要凭据的服务器地址。这是该有效负载的示例:https://index.docker.io/v1
。
该get
命令将 JSON 负载写入STDOUT
. Docker 从此有效负载中读取用户名和密码:
{
"Username": "david",
"Secret": "passw0rd1"
}
该erase
命令从 中获取字符串有效负载STDIN
。该有效负载携带 Docker 引擎想要删除其凭据的服务器地址。这是该有效负载的示例:https://index.docker.io/v1
。
该erase
命令可以写入错误消息,STDOUT
如果存在问题,Docker 引擎将显示该错误消息。
凭证助手
凭据助手与上面的凭据存储类似,但充当指定程序来处理特定注册表的凭据。默认凭证存储(credsStore
或配置文件本身)将不会用于与指定注册表的凭证相关的操作。
配置凭证助手
如果您当前已登录,请运行docker logout
以从默认存储中删除凭据。
凭证助手的指定方式与 类似credsStore
,但允许一次配置多个助手。键指定注册表域,值指定要使用的程序的后缀(即 后的所有内容docker-credential-
)。例如:
{
"credHelpers": {
"registry.example.com": "registryhelper",
"awesomereg.example.org": "hip-star",
"unicorn.example.io": "vcbait"
}
}