1.docker镜像的获取

使用如下的docker pull 命令可以从官方的docker hub网站获取需要的镜像。

docker pull NAME[:TAG]

官方网站虽然资源多,但是由于是国外的网站,访问速度很不理想,获取一个镜像可能要等很久。

2.镜像获取加速的方法

2.1 非官方仓库下载

国内有很多提供这样服务的镜像源,下载的速度要好很多。
有满足需要的镜像的话,可以从对应地址下载。
在NAME 前写完整的仓库地址即可

docker pull hub.c.163.com/public/ubuntu:14.04  %从网易蜂巢的源下载ubuntu镜像

2.2 加速官方仓库的下载

国内有DaoCloud等网站提供免费的加速服务。
实际上,就是修改docker的配置文件 /etc/docker/daemon.json
在下载的时候通过网站的中转加速。这样的好处是每次直接写pull命令,不用加具体地址。
DaoCloud
注册用户,登录后,找到加速器图标,点击按照说明做一下很简单的配置就好了

3.出现的问题

DaoCloud提供了这样一条命令(其实直接运行这个,不注册网站也可以)

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://d552c9b5.m.daocloud.io

命令通过脚本修改了 /etc/docker/daemon.json 文件
可是不知道为什么,这样自动修改后,重启docker服务会报错

Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details.

根据提示,查看日志会看到类似这样的内容

2月 03 17:06:01 xz-Sys systemd[1]: Failed to start Docker Application Container Engine. 
 2月 03 17:06:01 xz-Sys systemd[1]: docker.service: Unit entered failed state. 
 2月 03 17:06:01 xz-Sys systemd[1]: docker.service: Failed with result ‘exit-code’. 
 2月 03 17:06:01 xz-Sys systemd[1]: docker.service: Service hold-off time over, scheduling restart. 
 2月 03 17:06:01 xz-Sys systemd[1]: Stopped Docker Application Container Engine. 
 2月 03 17:06:01 xz-Sys systemd[1]: docker.service: Start request repeated too quickly. 
 2月 03 17:06:01 xz-Sys systemd[1]: Failed to start Docker Application Container Engine.

这种问题出现是因为之前那条命令自动修改的json文件格式有问题
命令运行后查看文件可以看到内容变成

{“registry-mirrors”: [“http://d552c9b5.m.daocloud.io“], 
 “runtimes”: {“registry-mirrors”: [“http://d552c9b5.m.daocloud.io“], 
 “nvidia”: {“registry-mirrors”: [“http://d552c9b5.m.daocloud.io“], 
 “path”: “/usr/bin/nvidia-container-runtime”, 
 “runtimeArgs”: [], 
 “storage-driver”: “devicemapper” 
 } 
 } 
 }

可能不完全一样,但格式是混乱的,可能和命令试了不只一次也有关系。

整理一下格式,变成

{“registry-mirrors”: [“http://d552c9b5.m.daocloud.io“], 
 “runtimes”: { 
 “nvidia”: { 
 “path”: “/usr/bin/nvidia-container-runtime”, 
 “runtimeArgs”: [], 
 “storage-driver”: “devicemapper” 
 } 
 } 
 }

现在再使用 sudo service docker restart 就没问题了
下载镜像的速度也会得到提升。

4.总结

小问题,但在网上看到确实有不少人遇到同样状况,因为大家用DaoCloud官方的命令可能不会怀疑其正确性,出现错误可能会浪费很多时间,想不到脚本修改的json会有问题。
总结到这里,hope it helps.