天天看点

解决dockerhub下载镜像慢问题

问题描述

我们下载了docker之后,docker pull的镜像默认是从dockerhub下载的。例如,执行

docker pull nginx

命令后,docker会去dockerhub去找镜像名为

nginx

,版本为

latest

的镜像。但是由于dockerhub被墙,下载就会非常慢。

解决办法

解决的办法就是更换下载源。目前国内dockerhub的加速下载源有:

  • 华为云:https://xxxx.mirror.swr.myhuaweicloud.com
  • 网易云:https://hub-mirror.c.163.com
  • 百度云: https://mirror.baidubce.com
  • DaoCloud: http://f1361db2.m.daocloud.io
  • 阿里云:https://ustc-edu-cn.mirror.aliyuncs.com

以华为云为例,假如开通了华为云的SWR服务,就可以使用它们的镜像加速器加速。

解决dockerhub下载镜像慢问题

方法一

docker pull

的时候指定加速地址:

# 修改前
docker pull library/nginx:mainline
#使用加速器替换后
docker pull a786190f76fb41679546b24d8d08d8b8.mirror.swr.myhuaweicloud.com/library/nginx:mainline
           

或者直接设置daemon进程的默认地址后下载:

docker --registry-mirror=https://a786190f76fb41679546b24d8d08d8b8.mirror.swr.myhuaweicloud.com daemon
docker pull library/nginx:mainline
           

方法二

修改

/etc/docker/daemon.json

,如果没有就自己建一个(需要Docker Version不低于1.10)。在文件中添加

registry-mirrors

(可以根据需要添加多个地址):

{
  "registry-mirrors": [
    "https://a786190f76fb41679546b24d8d08d8b8.mirror.swr.myhuaweicloud.com",
    "https://mirror.baidubce.com"
  ]
}
           

配置完成后重启docker服务:

service docker restart
# 或者
systemctl daemon-reload
systemctl restart docker.service
           

检查配置是否生效:

docker info
           

执行后,如果结果中显示了我们设置的镜像服务器地址,则说明设置已经生效,返回的信息类似下面这样:

Registry Mirrors:
 https://a786190f76fb41679546b24d8d08d8b8.mirror.swr.myhuaweicloud.com
           

方法三

也可以修改

/etc/default/docker

文件,在文件末尾增加一行:

DOCKER_OPTS="--registry-mirror=http://hub-mirror.c.163.com"
           

详细参考:https://www.jianshu.com/p/4ef9cc9c2092

方法四

参考华为云SWR的配置方式,将

/etc/sysconfig/docker

--registry-mirror

参数配置为步骤2中获取的加速器地址并保存:

echo --registry-mirror=https://a786190f76fb41679546b24d8d08d8b8.mirror.swr.myhuaweicloud.com >>/etc/sysconfig/docker
           

然后重启容器引擎。如果重启失败,则检查

/etc/docker/daemon.json

中是否配置了

registry-mirrors

参数,删除此参数并重启容器引擎即可。

参考

https://zhuanlan.zhihu.com/p/291280980

https://segmentfault.com/a/1190000021098776