「Docker Registry」- 登录镜像仓库 @20210311

问题描述

如果想要拉取私有镜像,需要先登录到镜像仓库,这是件相当简单的事情。

但是(凡事走有但是),却会遇到各种问题。比如 Cannot autolaunch D-Bus without X11 $DISPLAY 错误。

该笔记将记录:登录 Docker 镜像仓库的方法,以及常见问题处理。

解决方法

登录镜像仓库的方法很简单:

docker login # 登录 DockerHub 仓库

# 登录私有镜像仓库
docker login http://registry.example.com 

# 命令行的登录方式
echo "<password>" | docker login --username "<username>" --password-stdin http://registry.example.com

凭证存储方式

在 Docker 中,有很多凭证(在该案例中,指 docker login 凭证)存储的方式。这包括我们已知的:以 base64 编码保存在 ~/.docker/config.json 文件的 auths 字段中。除此之外,还有很多其他存储方式(比如 pass、osxkeychain 等等)。

凭证存储的默认行为

Docker == 调用 ==> Credentials Helper == 调用 ==> External Credentials Store

	Credentials Helper:在系统 $PATH 中搜索到的二进制程序。每种操作系统都有与之对应的二进制程序([[https://github.com/docker/docker-credential-helpers/releases|docker-credential-helpers/Release]]),比如 macOS 的 docker-credential-osxkeychain 程序,Windows 的 docker-credential-wincred 程序。
	External Credentials Store:后端的凭证存储服务。比如 macOS 的 Apple macOS keychain 服务、Windows 的 Microsoft Windows Credential Manager 服务。Linux 比较特殊,后面将详细说明。

我们以 macOS 为例,在存储凭证时,Docker 调用 docker-credential-osxkeychain(可在 $PATH 中搜索到的二进制程序),然后 docker-credential-osxkeychain 将调用系统的 Apple macOS keychain 来存储凭证。

我们以 Windows 为例,在存储凭证时,Docker 调用 docker-credential-wincred(可在 $PATH 中搜索到的二进制程序),然后 docker-credential-wincred 将调用系统的 Microsoft Windows Credential Manager 来存储凭证。

我们以 Linux 为例,在存储凭证时,Docker 调用 docker-credential-pass(可在 $PATH 中搜索到的二进制程序),然后 docker-credential-pass 将调用系统的 pass 命令来存储凭证。如果 pass 命令不存在,Docker 将使用 docker-credential-secretservice 来调用系统的 D-Bus Secret Service 服务来存储凭证。

当然,还可实现自己的 Credentials Helper 程序,这里就不再说明(因为我们基本用不到),参考 Credentials store/CREDENTIAL HELPER PROTOCOL 文档。

常见问题处理(凭证存储相关)

对于在 Linux 下的,Cannot autolaunch D-Bus without X11 $DISPLAY 问题,有以下几种解决方法:
1)卸载所有的 Credentials Helper 程序,迫使 Docker 使用配置文件存储凭证(Basic Auth);
2)安装对应的 Credentials Helper 程序,比如 Linux 下,安装 pass 命令:apt-get install pass
3)或者,因为 ~/.docker/config.json 使用错误的存储方式,修改 credsStore 配置;

参考文献

docker login | Docker Documentation
Releases · docker/docker-credential-helpers
docker login fails while docker-compose is installed on Ubuntu 18.04 · Issue #6023 · docker/compose
docker login fails on a server with no X11 installed - Stack Overflow
Windows7配置docker配置registry-mirrors国内镜像地址,运行hello-world
Releases · docker/docker-credential-helpers

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值