Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。Docker是内核虚拟化,不使用Hypervisor是不完全虚拟化,依赖内核的特性实现资源隔离。本文主要介绍Docker CLI 中 docker login和logout 常用命令。

1、docker login和logout 简介

docker login是用来登录到registry,docker logout是用来从registry登出。

2、docker login和logout 语法

1)docker login

docker login [OPTIONS] [SERVER]

2)docker logout

docker logout [SERVER]

参考文档:

https://docs.docker.com/engine/reference/commandline/login/

https://docs.docker.com/engine/reference/commandline/logout/

3、docker login和logout 命令

1)登录到自托管的registry

docker login localhost:8080

或者

docker logout localhost:8080

2)使用STDIN提供密码(--password-STDIN)

要以非交互方式运行docker login命令,可以设置--password-stdin标志,通过STDIN提供密码。使用STDIN可以防止密码出现在shell的历史记录或日志文件中。

cat ~/my_password.txt | docker login --username foo --password-stdin

3)特权用户需求

Docker登录需要用户使用sudo或者是root,除非:

连接到远程守护进程,例如docker-machine提供的docker引擎。

User被添加到docker组。这会影响系统的安全性;docker组与根目录是等价的。可以登录到拥有凭证的任何公共或私有存储库。登录时,该命令将凭据存储在$HOME/.docker/config.json中。在Linux上使用%USERPROFILE%/.docker/config.json在Windows上,通过下面描述的过程获取json。

4)配置凭据存储

需要指定凭据存储在$HOME/.docker/config.json告诉docker引擎使用它。config属性的值应该是要使用的程序的后缀(即docker-credential-之后的所有内容)。例如,要使用docker-credential-osxkeychain:

{
  "credsStore": "osxkeychain"
}

注意:如果当前已登录,请执行docker logout命令删除文件中的证书,然后再次执行docker login命令。

5)默认的行为

默认情况下,Docker在每个平台上查找本机二进制文件,即macOS上的“osxkeychain”,windows上的“wincred”,Linux上的“pass”。一个特殊的情况是,在Linux上,Docker将回退到“secretservice”二进制文件,如果它无法找到“pass”二进制文件。如果这些二进制文件都不存在,它会在上面描述的配置文件中以base64编码存储凭据(即密码)。

6)凭证辅助协议

凭证帮助程序可以是遵循非常简单协议的任何程序或脚本。该协议在很大程度上受到Git的启发,但它在共享的信息方面有所不同。

辅助函数总是使用命令中的第一个参数来标识操作。这个参数只有3个可能的值:store、get和erase。

store命令从标准输入中获取一个JSON有效载荷。该有效负载携带服务器地址,用于识别凭据、用户名、密码或身份令牌。

{
  "ServerURL": "https://index.docker.io/v1",
  "Username": "david",
  "Secret": "passw0rd1"
}

如果存储的密钥是标识令牌,则应该将用户名设置为<token>

store命令可以将错误消息写入标准输出,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引擎会在出现问题时显示这些错误信息。

7)配置凭证辅助工具

如果当前已登录,请运行docker logout从默认存储中删除凭据。

以与credsStore类似的方式指定凭据帮助程序,但允许一次配置多个帮助程序。key指定注册表域,values指定要使用的程序的后缀(即docker-credential-之后的所有内容)。例如:

{
  "credHelpers": {
    "registry.example.com": "registryhelper",
    "awesomereg.example.org": "hip-star",
    "unicorn.example.io": "vcbait"
  }
}

4、选项说明

简称

默认

描述

--password , -p

密码

--password-stdin

从stdin中获取密码

--username , -u

用户名

推荐文档

相关文档

大家感兴趣的内容

随机列表