
常用的镜像服务
最近因为工作变更开始越来越多的用容器,容器引擎,编排引擎,各种网络和存储,诸如此类的。就发现很多资源都在国外,而且非常多的资料都围绕着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他们自己的实现,非常的简陋,但也不是不能用。