Docker的執行非常簡單,就是docker client呼叫Docker daemon,然後daemon透過libcontainer
呼叫Linux的核心模組來完成建立容器的的步驟,下面看圖說故事。
當準備建立Container時,輸入指令即執行docker client。呼叫Docker daemon,預設使用的通訊協定是unix:///var/run/docker.sock
。
Docker daemon透過libcontainer
要求Linux核心建立Container。
namespace
建立一個獨立的空間,包括pid、network、IPC、UTS、mount
等namespace,daemon根據client的參數定義來分配CPU、記憶體或磁碟IO等。注意虛線,此時Container中沒有任何東西!只有空殼沒有內容。Container的空殼建立完成,需要將真正的作業系統及應用程式放入這個空殼中。從上面的流程可以得知,Docker Container執行的調整方式就是我們下的參數。事實上,執行Docker時的參數,就是決定Linux核心建立Namespace以及設定網路、儲存的方法,這在本書稍後會有詳細說明。
注意 - Docker client可以在另一台主機 此時和 Daemon的之間的連線可以用https取代unix://,但十分危險,除非你很確定安全性沒問題才要這麼做!