0%

搭建Docker官方缓存镜像服务

Docker官方缓存镜像服务搭建

目的

因为 docker 拉取镜像时常失败,每个机器拉取的相通的镜像浪费大量时间。

所以有以下需求:

  1. 建立一个缓存docker镜像的服务,
  • 如果缓存服务中有需要拉取的镜像,则直接从缓存服务中拉取
  • 如果缓存服务中没有,则从官网或其他地址中拉取
  1. 缓存服务支持多个上游仓库
  2. 支持本地创建没有上传到 dockerhub 的镜像,缓存拉取

方案

  1. 官方的 Docker Registry 方法
    • 简单
    • 不支持多个上游仓库地址
    • 不支持非 dockerhub 镜像
  2. 开源 Harbor 方案
    • 复杂
    • 支持多个上游仓库地址
    • 支持非 dockerhub 镜像

官方 docker registry

创建 config.yaml

1
2
3
4
5
6
7
8
version: 0.1
http:
addr: :5000 # 容器内使用 5000 端口作为服务端口
storage:
filesystem:
rootdirectory: /var/lib/registry # 缓存镜像的地址
proxy:
remoteurl: https://registry-1.docker.io # 上游仓库地址

启动镜像 registry

1
docker run -d -p 5000:5000 --restart=always --name registry-mirror -v $(pwd)/config.yml:/etc/docker/registry/config.yml -v /home/cp4/WorkStation/docker_registry/data/registry:/var/lib/registry \ registry:2

/home/cp4/WorkStation/docker_registry/data/registry 是缓存镜像存放的宿主机路径,改为自己的路径

启动成功后,在客户端的 docker 配置中(/etc/docker/daemon.json)增加:

1
2
3
{
"registry-mirrors": ["http://<your_server_ip>:5000"]
}

重启docker

1
sudo systemctl restart docker

在 客户端中验证,缓存服务的效果

1
2
docker rmi mysql
docker pull mysql

拉取成功后再次删除后拉取,查看是否速度上变快