一个计算机技术爱好者与学习者

0%

好好学Docker:Docker镜像站的配置和使用

1. 前言

使用 Docker 的时候,经常需要从官方获取镜像,但是有时候拉取镜像的非常慢,体验很差。

解决办法:使用 docker.io 的国内镜像站,加速docker镜像的下载。

本文中,我们就来学习配置使用docker镜像站。

参考文档:

2. 推荐镜像站

个人专属加速地址:

3. 配置使用镜像站

1、修改docker配置文件
创建或修改 /etc/docker/daemon.json ,添加 registry-mirrors 配置

1
2
3
4
5
6
7
8
{
"registry-mirrors" : [
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://cr.console.aliyun.com"
]
}

2、重启docker

1
2
systemctl daemon-reload
systemctl restart docker

3、验证配置

1
docker info

看到 Registry Mirrors 部分有我们配置的镜像站,就表明配置成功。

4. 自建镜像站

自建镜像站的优点,是可以统一配置代理,下载需要科学上网才能下载的镜像。

参考文档:Docker Registry

4.1. 启动镜像站

1、下载registry镜像

1
docker pull registry:2.7.1

2、启动本地镜像站
启动docker.io镜像站:

1
2
3
4
5
docker run --name docker_io_mirror -d registry:2.7.1 \
-p 5000:5000 \
-e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \
-v /data/docker_io_registry:/var/lib/registry \
--restart always

启动gcr.io镜像站:

1
2
3
4
5
6
docker run --name gcr_io_mirror -d registry:2.7.1 \
-p 5001:5000 \
-e REGISTRY_PROXY_REMOTEURL=https://gcr.io \
-e HTTPS_PROXY=socks5://192.168.56.1:7891 \
-v /data/gcr_io_registry:/var/lib/registry \
--restart always

4.2. 使用本地镜像站

假设镜像站宿主机IP地址为:192.168.56.101
那么想要使用镜像站的机器上, /etc/docker/daemon.json 修改为:

1
2
3
4
5
6
7
8
9
10
{
"registry-mirrors": [
"http://192.168.56.101:5000",
"http://192.168.56.101:5001"
],
"insecure-registries": [
"http://192.168.56.101:5000",
"http://192.168.56.101:5001"
]
}

4.3. K8S中搭建镜像站

K8S中搭建镜像站,可以参考docker-registry-mirror/manifests

4.4. Harbor作为镜像站

除了使用docker registry作为镜像站,harbor也可以作为镜像站,具体配置方法参考文档使用 Harbor 搭建 Mirror Registry

不过不建议这么使用,因为harbor作为mirror站后,只能作为mirror站,大材小用,原本的很多功能就不能使用了。

5. Docker Proxy

Docker Proxy提供多平台容器镜像代理服务,支持 Docker Hub, GitHub, Google, k8s, Quay等镜像仓库。

5.1. Docker Hub 官方镜像代理

5.1.1. 常规镜像代理

官方命令:docker pull stilleshan/frpc:latest
代理命令:docker pull dockerproxy.com/stilleshan/frpc:latest

5.1.2. 根镜像代理

官方命令:docker pull nginx:latest
代理命令:docker pull dockerproxy.com/library/nginx:latest

5.2. GitHub Container Registry

5.2.1. 常规镜像代理

官方命令:docker pull ghcr.io/username/image:tag
代理命令:docker pull ghcr.dockerproxy.com/username/image:tag

5.3. Google Container Registry

5.3.1. 常规镜像代理

官方命令:docker pull gcr.io/username/image:tag
代理命令:docker pull gcr.dockerproxy.com/username/image:tag

5.4. Google Kubernetes

5.4.1. 常规镜像代理

官方命令:docker pull k8s.gcr.io/username/image:tag
官方命令:docker pull registry.k8s.io/username/image:tag
代理命令:docker pull k8s.dockerproxy.com/username/image:tag

5.4.2. 根镜像代理

官方命令:docker pull k8s.gcr.io/coredns:1.6.5
官方命令:docker pull registry.k8s.io/coredns:1.6.5
代理命令:docker pull k8s.dockerproxy.com/coredns:1.6.5

5.5. Quay.io

5.5.1. 常规镜像代理

官方命令:docker pull quay.io/username/image:tag
代理命令:docker pull quay.dockerproxy.com/username/image:tag