Linux學習筆記(2):安裝Docker與Container

系統在安裝建置時,最麻煩的是作業系統安裝完成後,還要更新一堆修補程式、防毒碼及設定環境等複雜麻煩的事,在不同的主機上,安裝的程式就要重新安裝一遍,很麻煩。

如果有個系統,可以將環境設定一起保留,即使主機環境不相同,可以透過軟體或系統作為銜接,讓軟體安裝完成後,直接帶著相關參數一起到新的環境,這樣一來,就不需重新安裝整套的作業系統。



由於硬體建置系統時,有安裝時間冗長、需要特定驅動程式等缺點,新的技術就出現虛擬化Virtual Machine跟容器Docker兩種方法,前者可以在一部實體機上安裝多套作業系統,容器則在一個作業系統下,可以安裝多個容器,亦即可以省下安裝該系統或程式所需的作業系統空間,系統啟動的時間也節省很多。

雖然使用者可以用虛擬機還原系統的原始環境,還是有些缺點的,包括:
  • 執行系統需要等作業系統啟動,效率較差
  • 作業系統佔用空間多
  • 操作的程序較多
有一張圖,可以說明兩種系統的差異,左右兩個架構,最大差異就是作業系統層:

來源:philipzheng.gitbooks

如果改用容器 Docker,就可以改善上述三項的缺點,且系統佔用的空間少,通常只有幾MB而已,啟動的速度也快很多。總之,容器Docker比虛擬機有更多的優點,支出成本也降低了。

安裝Docker
本文就說明如何在Ubuntu 作業系統環境下,安裝 Docker的程序以及一些基本指令。在Ubuntu Linux環境,使用apt-get安裝 Docker指令如下:
$ sudo apt-get install docker.io

安裝完成後,可以執行以下指令,看一下目前安裝的版本:
$ docker version


上圖最後一行出現permission denied,表示一般使用者,無法正常讀取Docker版本,只要將登入的使用者加上Docker群組的權限,重新登入即可,加入群組的指令如下:
$ sudo usermod -aG docker ceiling

如果要檢查服務是否正常啟動,可以執行以下指令:
$ service docker status


如果要啟動╿停止╿重新啟動╿狀態 Docker可以執行以下指令:
$ service docker {start|stop|restart|status}


映像檔管理
瞭解了如何安裝Docker 及啟動,以下就來看看如何搜尋 Docker Hub中的映象檔,可以使用docker search 這個指令,加上 -s [數字]代表要顯示比[數字]更高的星等,通常在OFFICIAL欄位出現[OK]的,表示這個Container是官方發行的。以下就以wordpress為例,指令如下:
$ docker search -s 10 wordpress 

如果要從Docker hub下載映像檔,可以使用 docker pull這個指令,沒有加任何Registry的位址時,預設就會從官方的Registry下載:
$ docker pull wordpress:latest

如果要看目前容器內的映像檔,可以使用 docker images這個指令:
$ docker images

如果要刪除本機中存放的映像檔,可以使用 docker rmi這個指令。但如果容器中還有正在使用的映像檔,則無法刪除。如果一定要刪除,可以使用-f 參數強迫刪除。
$ docker rmi -f wordpress

如果要執行某個映像檔,可以執行 docker run 或 docker create這兩個指令,如果容器內沒有這個映像檔,會直接從預設的hub下載映像檔安裝:
$ docker run wordpress

如果要看映像檔執行的情況,可以使用docker stat 來看記憶體
$ docker stats
得到以下結果:
CONTAINER     CPU %    MEM USAGE / LIMIT       MEM %    NET I/O          BLOCK I/O   PIDS
342362a3afae  0.01%    39.36 MiB / 1.936 GiB   1.99%    828 B / 648 B    0 B / 0 B   6

列出docker Container使用的 port:
$ docker port c02a2268f8e6
得到以下結果:
5601/tcp -> 0.0.0.0:5601


[參考資料]
https://www.docker.com
https://philipzheng.gitbooks.io/docker_practice/content/introduction/what.html
https://legacy.gitbook.com/book/joshhu/dockercommands/details


[修訂紀錄]
2018.05.01 初稿

Post a Comment

較新的 較舊