问题描述
我们下载了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服务,就可以使用它们的镜像加速器加速。
方法一
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
更多推荐