常用的镜像服务

2021 12 19, Sun

最近因为工作变更开始越来越多的用容器,容器引擎,编排引擎,各种网络和存储,诸如此类的。就发现很多资源都在国外,而且非常多的资料都围绕着docker,生态中其他的常用组件都不见人提及。我就简单整理一下。

配置的方法

Docker:/etc/docker/daemon.json:registry-mirrors

Docker的registry配置方法大家应该都知道了,修改或者增加/etc/docker/daemon.json就好了,对应的key是registry-mirrors,比如说

{
	"registry-mirrors": ["https://vhmjt3oe.mirror.aliyuncs.com"]
}

Docker拉镜像时,和registry的交互都是由客户端进行的,所以身份认证信息都在客户端处存放,一般是$HOME/.docker/config.json中auths字典下面,一个域名一份认证信息,明文保存了Basic Auth的信息。

其中有两个细节问题,一个是明文存不安全,另一个是有一些程序不支持配置Registry用户名密码,但是要通过Docker来拉取镜像,而且这些程序大都猜不到root的家目录在哪里。

明文存密码的问题可以通过helper解决。对于很多系统有钥匙环,比如说macOS有Keychain Access,跨平台有keepass,Linux自己有gnome-keyring和kwallet,docker可以使用一个helper程序来把密码信息存到其他地方。

找身份认证信息的问题这个暂时无解,只能说多读官方文档。好在是K8S官方要去掉dockershim了,这类问题会少一些,毕竟containerd的配置文件本身可选身份认证信息。

Podman:/etc/containers/registries.conf

podman是docker的一个替代品,很多设计和Docker也有些类似。

在配置registry这件事情上还是不大一样的,比如说使用registry mirror这件事情上,podman的配置文件在/etc/containers/registries.conf,这是一个toml文件

unqualified-search-registries = ["docker.io"] # 没有指定域名时使用的registry
[[registry]]
prefix = "docker.io" # 以docker.io为前缀的都是这个registry的
# #location = "ccr.ccs.tencentyun.com"
location = "vhmjt3oe.mirror.aliyuncs.com" # 定义实际使用的域名

认证文件和docker有点像,唯一不一样的是放在了$XDG_RUNTIME_DIR/containers/auth.json,这个目录是个tmpfs,重启后就没有了。

Containerd:/etc/containerd/certs.d/$PREFIX/hosts.toml

containerd是docker被Kubernetes计划废除后比较值得一看的容器引擎。

registry配置的地方有两个,老的直接写在/etc/containerd/config.toml里面,但是新的实例全部建议用另一种:/etc/containerd/certs.d/$PREFIX/hosts.toml,实际内容写server = “…“就行,比如说/etc/containerd/certs.d/docker.io/hosts.toml:

server = "https://vhmjt3oe.mirror.aliyuncs.com"

capabilities = ["pull", "resolve"]

[header]
Authentication="Basic ....."

和配置里面写的一样,身份认证信息可以直接写到这里。

常用的Registry服务

官方

Docker Hub

docker自带的,实际端点在registry-1.docker.io

GCR / K8S

国内不存在

AliCR

阿里自己有个registry服务,每个人可以开自己的。除此之外他们托管了一份Kubernetes的镜像。通常是registry.cn-hangzhou.aliyuncs.com

镜像

阿里加速服务

访问 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors ,登陆后就有

阿里重制(?)的K8S GCR

阿里因为国内访问K8S过于魔鬼,魔改过minikube,后来合并入了主分支,阿里的镜像也开放了出来,托管了一些kubernetes本身的常用镜像,都在registry.cn-hangzhou.aliyuncs.com/google_containers下面,同样是登陆阿里云以后就可以搜索。

腾讯

ccr.ccs.tencentyun.com

自建

Nexus

万金油,什么都可以做,还可以聚合成一个group

GoHarbor

就是专门做docker镜像服务的。

Distribution Registry

Docker他们自己的实现,非常的简陋,但也不是不能用。