1. 程式人生 > >使用DaoCloud加速docker映象下載——修改daemon.json遇到的問題

使用DaoCloud加速docker映象下載——修改daemon.json遇到的問題

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.