Ubuntu 下 Docker 设置 Registry
- docker 拉取镜像怎么办?
- 设置 registry-mirror
- 为 dockerd 设置 http 代理
- 鉴于很多厂商不再提供公共的 docker registry,提供服务的也都对下载速度进行了限制,建议使用第二种解决方案
docker 配置 registry-mirror
- 执行
systemctl cat docker | grep Exec
查看 dockerd 的启动命令,确认启动时没有指定registry-mirror
选项
ø> systemctl cat docker | grep Exec
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
- 向
/etc/docker/daemon.json
写入以下内容
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
- 重新启动服务
sudo systemctl daemon-reload
sudo systemctl restart docker
- 检查配置是否成功
docker info | grep -A 3 'Registry Mirrors:'
- 速度限制
目前找到的可用的公共 registry-mirror 一共有三个
https://hub-mirror.c.163.com
https://mirror.baidubce.com
https://xxx.mirror.aliyuncs.com
(需要登录阿里云后获取)
他们都存在限速,最高下载速度是每秒 500k 左右。
- 镜像更新不及时
有些较新的镜像,例如 golang:1.19
, registry mirror 中并没有,最终还是会从 registry-1.docker.io
去拉取镜像
dockerd 使用 http 代理
- 在执行
docker pull
的时候,拉取镜像的过程实际是由 dockerd 执行,因此,想要在访问docker.io
时加上代理,就需要通过http_proxy
环境变量为 dockerd 配置代理 - 修改 systemd 配置,并写入代理配置
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/proxy.conf
sudo tee /etc/systemd/system/docker.service.d/proxy.conf <<-'EOF'
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"
EOF
- 重新启动服务
sudo systemctl daemon-reload
sudo systemctl restart docker
- 检查配置是否成功
docker info | grep -A 3 'Proxy'
参考链接
2022年08月09日 / 21:14