在上次 docker 更新至 1.8.x 后,docker 默认使用 v2 版本的 registry api 来拉取镜像,目的是提供更安全更便捷的方式。
但是在 docker 1.8.1 的源码中,对于 api 的选择是这样的,先从设置的--registry-mirror=xxxxxxxx
上去试探/v2
,如果返回错误的话就会转而使用官方的/v2
api,当官方的/v2
版本 api 再挂掉之后就会转而使用官方的/v1
api。
所以有段时间里国内的很多 docker hub 加速服务都出现了一定程度上的失效,不过架设一个 v2 版本的镜像也不是特别困难,只不过部署文档并没有在 Docker 官方网站上,而是在这里_(:з」∠)_
开叔翻到的。
所以按照其中的mirror.md
内容看来,部署起来也不是很困难,直接给出 docker-compose 文件了。
docker-compose.yml:
server:
image: registry:2.1.1
ports:
- "5000:5000"
volumes:
- ./config-mirror.yml:/etc/docker/registry/config-mirror.yml
- ./data:/var/lib/registry
command:
- /etc/docker/registry/config-mirror.yml
config-mirror.yml:
version: 0.1
log:
fields:
service: registry
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
proxy:
remoteurl: https://registry-1.docker.io
然后在 docker daemon 启动时加上对应的--registry-mirror
就搞定了,缓存的 images 会出现在运行着 registry 容器的宿主机上。注意要带上对应的端口,必要时可以加一层反代,因为所有的过程都是 http 或者 https 的。