问题描述

我们下载了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服务,就可以使用它们的镜像加速器加速。
华为云SWR镜像加速

方法一

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

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐