[Day03]: 容器與映像技術原理


[Day03]: 容器與映像技術原理

映像(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 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

#docker #虛擬化技術 #容器技術 #輕量服務
Docker 7天初探
用7 天了解Docker 的技術原理以及基本操作






Related Posts

如何用 Markov Decision Process 描述 Human-Robot Interaction 問題

如何用 Markov Decision Process 描述 Human-Robot Interaction 問題

Day 3 - 了解 Git 及 GitHub

Day 3 - 了解 Git 及 GitHub

TCP/IP

TCP/IP

Day 6 - 使用 Tenor API 讓惠惠傳送隨機爆炸 gif

Day 6 - 使用 Tenor API 讓惠惠傳送隨機爆炸 gif

我很菜,所以只會用原生 JS 跟 CSS 寫「口罩地圖 」Ep.00

我很菜,所以只會用原生 JS 跟 CSS 寫「口罩地圖 」Ep.00

Android Status bar 深色模式設定

Android Status bar 深色模式設定



Comments