- 無論是容器,還是虛擬機(jī),都依賴于內(nèi)核中的技術(shù),虛擬機(jī)依賴的是 KVM,容器依賴的是 namespace 和 cgroup 對進(jìn)程進(jìn)行隔離。
- 為了運(yùn)行 Docker,有一個(gè) daemon 進(jìn)程 Docker Daemon 用于接收命令行。
- 為了描述 Docker 里面運(yùn)行的環(huán)境和應(yīng)用,有一個(gè) Dockerfile,通過 build 命令稱為容器鏡像。容器鏡像可以上傳到鏡像倉庫,也可以通過 pull 命令從鏡像倉庫中下載現(xiàn)成的容器鏡像。
- 通過 Docker run 命令將容器鏡像運(yùn)行為容器,通過 namespace 和 cgroup 進(jìn)行隔離,容器里面不包含內(nèi)核,是共享宿主機(jī)的內(nèi)核的。對比虛擬機(jī),虛擬機(jī)在 qemu 進(jìn)程里面是有客戶機(jī)內(nèi)核的,應(yīng)用運(yùn)行在客戶機(jī)的用戶態(tài)。

image.png