關於docker使用的幾個小問題(一)


本文為作者原創,轉載請注明出處(http://www.cnblogs.com/mar-q/)by 負贔屓

 

  由於剛接觸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鏡像站點,就可以看到自己的鏡像加速地址,阿里雲的手冊中有各個環境下的配置方法。這里給比較懶的同學推薦中科大的鏡像加速地址:

  1. 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

  2. Linux下配置鏡像加速器(Ubuntu16.04)

  參照阿里雲配置docker的daemon.json文件:

vim /etc/docker/daemon.json ###
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] }
systemctl restart docker.service ##重啟服務

  有的同學應該會在重啟服務的時候報錯:

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

 

 三、鏡像在哪里

  1. 在Linux下

  我們很容易就可以找到鏡像目錄,鏡像是以層次結構存儲的。 每當創建一個pull一個新的image或者容器時會在/var/lib/docker/graph/*生成對應ID的目錄存儲元數據,/var/lib/docker/aufs/diff/*目錄生成對應ID的目錄存儲數據。 當容器被刪除或者image被移除時,對應的目錄也會被移除。

  2. 在Mac下

  官方提供的DockerToolBox,不得不吐槽,Windows差距怎么就這么大呢。Mac下通過Open in Finder可以很輕松找到文件目錄,Mac硬盤小,玩docker壓力還是比較大的,只能拿來測試練練手,土豪隨意。

  3. 在Windows下

  也是用的官方的ToolBox,正如前文所述,它需要在VirtualBox下運行一個虛擬機,所以我們就在這個虛擬機中找我們的docker就行了。廢話不多說,直接看圖。

   綜上所述,不推薦使用Windows玩docker,建議阿里雲申請個免費ECS,玩起來隨便折騰,而且現在京東、華為、騰訊都在折騰雲計算,很多免費資源,不用白不用,改天不忙了寫個小白科普文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM