使用容器镜像加速器

1. 在Docker上使用容器镜像加速器

容器镜像加速器本质上也是一个 Docker Registry,我们可以直接访问加速器地址拉取镜像,也可以配置 registry-mirrors 让 Docker Daemon 自动将访问 Docker Hub 的请求重定向到容器加速器地址,详细操作如下。

1.1 直接拉取容器镜像

hub.alduin.net 提供对 Docker Hub 的镜像加速,假设 Docker Hub 上的目标 repository 为 wbuntu/alpine,tag 为 3.18,可以直接通过以下方式拉取镜像:

docker pull hub.alduin.net/wbuntu/alpine:3.18

其他常用的 debian、alpine、nginx 等,归属于官方镜像,通过 hub.alduin.net 代理访问时,需要加上 library,如下:

docker pull hub.alduin.net/library/debian:12

拉取成功后可以使用 docker tag 命令重名容器镜像:

docker tag hub.alduin.net/library/debian:12 debian:12

1.2 配置registry-mirrors拉取容器镜像

Note

Docker Daemon 的 registry-mirrors 配置只对拉取 Docker Hub 的容器镜像生效,对其他镜像仓库(如 ghcr.io、gcr.io、registry.k8s.io 等)、私有仓库无效。

在 Linux 环境下,创建一个/etc/docker/daemon.json 文件,内容如下:

{
    "registry-mirrors": [
        "https://hub.alduin.net"
    ]
}

然后重启 Docker Daemon

systemctl daemon-reload && systemctl restart docker

接着检查 Registry Mirrors 配置是否生效,可以看到输出中含有镜像加速器地址,现在 Docker 会自动将访问 Docker Hub 的请求切换到访问镜像加速器:

➜  ~ docker info | grep -A1 Registry
 Registry Mirrors:
  https://hub.alduin.net/

最后拉取一个 Docker Hub 上的容器镜像,验证是否可以正常使用加速器:

➜  ~ docker pull alpine:3.20
3.20: Pulling from library/alpine
ec99f8b99825: Pull complete
Digest: sha256:b89d9c93e9ed3597455c90a0b88a8bbb5cb7188438f70953fede212a0c4394e0
Status: Downloaded newer image for alpine:3.20
docker.io/library/alpine:3.20

Docker Desktop 用户可以在设置页面的 Docker Engine 中修改 json 文件配置,添加 registry-mirrors,修改后点击 Apply & restart 应用配置并重启服务。

alt text alt text

2. 常用容器镜像仓库加速

除了 Docker Hub 外,我们可能还需要加速访问其他容器镜像仓库,详细内容参考:常用容器镜像仓库

3. 其他容器引擎配置

Docker 是最早也是最流行的容器引擎,但现在除了 Docker 外还有一些容器管理工具可以使用,如 Podman、Containerd、CRI-O 等,可以参考这篇文档配置加速:常用容器引擎