1. 程式人生 > >關於docker使用的幾個小問題

關於docker使用的幾個小問題

atm who edi tbb dram ++z bug dockerd 生成

由於剛接觸docker踩了幾個坑,希望本文對網癮少年有所幫助。

Docker分CE版(社區版)和EE版(商用版),具體安裝流程參考文檔介紹,在此不再贅述。下面分Windows和Linux分別踩坑:

一、Windows下的使用

Win10可以直接安裝Docker ToolBox,網上很多配置教程,但是當你百度Win7安裝,常見的幾個都是安裝Boot2Docker。其實Docker ToolBox也是支持Win7的,所以這裏就別踩坑了,因為Docker ToolBox裏面已經集成了Boot2Docker。

  • Boot2Docker其實是Win環境下的一個Linux虛擬機,必須配合virtualBox使用,如果你安裝了Docker ToolBox,打開virtualBox可以看到這個虛擬機:

  技術分享

  • 直接官網下載Docker ToolBox,安裝完成運行DockerQuickStartTerminal,執行命令:
docker-machine ls   ##我已經把boot需要的Linux鏡像下載了,下載過程比較慢,建議科學上網。

    技術分享

docker-machine env default  ##查看dockertools環境變量:

    技術分享

    • eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default) ###根據提示運行命令:寫入環境變量
  • 此時我們是在docker環境下的,可以嘗試run一個鏡像試試(這裏試了ubuntu:16.04,本地沒有的鏡像會自動下載)
    • docker run -it ubuntu:16.04 ##執行run命令,出現錯誤提示:

    技術分享

    • 說明我們運行的方式不對,按照建議修改run方式:
winpty docker run -it ubuntu:16.04  ##重新執行,成功進入系統

    技術分享

  • 或者,可以通過ssh的方式進入docker環境,在任意的bash環境下輸入命令:
docker-machine ssh default  #在任意bash下執行進入VMbash

    技術分享

docker run -it ubuntu:16.04     ##執行run命令成功進入系統,不會提示使用winpty方式運行。

  • Linux下的安裝配置沒啥坑,yum、apt直接裝就好了。

二、使用國內鏡像加速器

docker默認使用的鏡像服務器都在國外,速度比較感人,所以需要鏡像加速。我使用的是阿裏雲鏡像加速,建議自己去註冊一個阿裏雲賬號,進入個人的容器鏡像服務->docker hub鏡像站點,就可以看到自己的鏡像加速地址,阿裏雲的手冊中有各個環境下的配置方法。這裏給比較懶的同學推薦中科大的鏡像加速地址:

  • Windows下配置鏡像加速
#通過docker-machine進入docker環境
docker-machine ssh default
#修改boot2docker配置文件
sudo vi /var/lib/boot2docker/profile
#在--label provider=virtualbox的下一行添加
--registry-mirror https://docker.mirrors.ustc.edu.cn
#重啟docker服務 sudo /etc/init.d/docker restart
#或者重啟VM:exit退出VM bash,在windows bash中執行 docker
-machine restart
  • Linux下配置鏡像加速器(Ubuntu16.04)
    • 參照阿裏雲配置docker的daemon.json文件:
vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
    • 結果重啟服務報錯: Job for docker.service failed because the control process exited with error code.See "systemctl status docker.service" and "journalctl -xe" for details.
    • 查看一下systemctl status docker.service

    技術分享

    • 這個坑的原因是:docker的socket配置出現了沖突,docker在運行時有一個啟動入口文件:/lib/systemd/system/docker.service,而我們在修改鏡像加速器的時候又給它生成了一個配置文件:/etc/docker/daemon.json,兩個文件對host進行了配置,所以發生沖突。解決的辦法:將docker啟動入口文件中的-H fd://刪除再重啟服務,或者在啟動入口配置監聽的端口和本地socket信息:
vim /lib/systemd/system/docker.service
#ExecStart=/usr/bin/dockerd -H fd:// $DOCKER_OPTS
ExecStart=/usr/bin/dockerd
#或者:ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

關於docker使用的幾個小問題