使用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.