映像(Image)
Docker中的映象(Image),是一個包含應用程式以及其依賴庫的檔案(Dockerfile)
它以唯獨方式建立容器中的基本環境
- 功能:環境設置、保存環境運行狀態以方便移植
映像名稱: dock0/ssh:latest
[命名空間/檔案名稱(服務名稱):映像標籤(顯示版本)]
映像ID:為64位元十六進位字串,每個映像皆有映像ID
映像的結構
映像為分層結構,每一層都在前一層的基礎中進行更動,且每層皆有自己的ID,最頂層則為映像ID
最底層為 bootfs,為開機檔案系統
往上一層,通常為作業系統層,又稱作 base image
再往上就看其image使用的服務是根據甚麼作業系統來執行
最上層則為 Container,容器層
只有容器層可以進行讀寫,其餘皆唯讀~
映像倉庫
取得映像的方法就是藉由映像倉庫,Docker CLI 可藉由docker pull 指令從本地端的映象倉庫中下載所需的映象檔
除了本地端的映像倉庫,也有遠端映像倉庫,如:Docker hub
Docker hub中有許多由個人或是組織提供的映象檔,提供映像建構、映像託管等服務
對於公司行號,也可以部屬私有映像倉庫,可允許小範圍內安全的共享Docker Image
映像操作指令
* 取得映像: docker pull [image]
* 列出映像: docker images
* 映像詳細資訊:docker inspcect [image]:[tag]
* 刪除映像:docker rmi [image]:[tag]
* 映像移植:docker save [image]:[tag] > file
容器(Container)
Docker用於封裝隔離服務和應用程式的貨櫃(Container)
容器會讀取映像中的環境程式設定,並將異動保存於沙盒環境
運作模式
- 前台互動模式 (Interactvie mode)
- 容器執行於前台,並可輸入參數打開容器內的輸入串流,這時即可與容器內的程式互動
- 後台守護模式 (Daemon mode)
- 容器執行於後台,不會占用終端,也無法連接到容器內執行中的程式,此狀態需透過指令關閉
容器的建立過程
1. 建立docker時,Docker CLI呼叫 Docker Daemon
2. 透過Libcontainer要求kernel執行container
3. Linux Kernel隨即建立 Namespaces,以隔離環境
4. 檢查現有映像列表
5. 載入映像
6. 分配檔案系統
7. 設定網路
8. 執行應用程式
9. 執行結束容器則停止
容器操作指令
* 創建容器: docker create [container]:[tag]
* 執行容器: docker run [container]:[tag]
* 開啟前台互動模式: docker run -it [container] /bin/bash
* 開啟後台模式: docker run -d [container]
* 列出容器: docker ps [-a,-l][-n Number]
//-a 列出全部 -l 列出最後一個,-n 2 列出最後兩個
* 啟動容器: docker start [container]
* 停止容器: docker stop/kill [container]
結語
了解docker的基本構造和操作指令後,docker環境中的檔案要如何共享以及傳遞呢? 下一篇將會介紹docker中的資料卷(data volume)概念
參考資料
[1]http://juilin77.blogspot.com/2019/05/3-01-container-state.html