# 這些元件如何合作建立Docker環境
Docker的執行非常簡單,就是docker client呼叫Docker daemon,然後daemon透過`libcontainer`呼叫Linux的核心模組來完成建立容器的的步驟,下面看圖說故事。
### Docker執行過程
1. 首先當然要有**安裝了Docker的Linux及硬體**。
_x86硬體,版本正確的Linux以及Docker_
![](https://box.kancloud.cn/2015-08-09_55c75977ef62a.png)
1.
當準備建立Container時,**輸入指令**即執行docker client。呼叫Docker daemon,預設使用的通訊協定是`unix:///var/run/docker.sock`。
![](https://box.kancloud.cn/2015-08-09_55c759780b7ba.png)
1.
Docker daemon透過`libcontainer`要求Linux核心建立Container。
![](https://box.kancloud.cn/2015-08-09_55c759781654c.png)
1. 此時Linux核心收到指示,即啟動核心的`namespace`建立一個獨立的空間,包括`pid、network、IPC、UTS、mount`等namespace,daemon根據client的參數定義來分配CPU、記憶體或磁碟IO等。**注意虛線,此時Container中沒有任何東西**!只有空殼沒有內容。Container的空殼建立完成,需要將真正的作業系統及應用程式放入這個空殼中。
![](https://box.kancloud.cn/2015-08-09_55c7597822a70.png)
1. Damone檢查本機的現有映像檔列表,看要填入此Container空殼的映像檔之前有沒有下載過,![](https://box.kancloud.cn/2015-08-09_55c759783e33a.png)
1. 有的話,直接從本機載入Container中,此時Container建立完成並啟動。![](https://box.kancloud.cn/2015-08-09_55c759784fa93.png)
1. 若本機沒有此映像檔,daemon到預設的Docker Registry, 根據client的參數,下載適當的映像檔。![](https://box.kancloud.cn/2015-08-09_55c759785db1f.png)
1. 下載回來即將此映像檔,填入Container的空殼,此時Container即啟動完成。![](https://box.kancloud.cn/2015-08-09_55c759786ccf7.png)
從上面的流程可以得知,Docker Container執行的調整方式就是我們下的參數。事實上,執行Docker時的參數,就是決定Linux核心建立Namespace以及設定網路、儲存的方法,這在本書稍後會有詳細說明。
注意 - Docker client可以在另一台主機此時和 Daemon的之間的連線可以用https取代unix://,但十分危險,除非你很確定安全性沒問題才要這麼做!![](dockerclienthttps.png)
- 本書簡介
- Docker的故事及原理
- Docker的前世今生
- 從dotCloud平台管理到Docker
- 旨在建立一個「更輕量化的Container」
- 一定要了解的Docker原理
- Docker的最大特色
- Docker的元件– Linux核心部分
- Docker的元件– Docker核心部分
- 這些元件如何合作建立Docker環境
- 看個實例
- 全環境Docker的完整安裝
- 安裝前說明
- 在Mac及Windows下安裝Docker
- boot2docker簡介
- Mac OS下的boot2docker
- 在Windows下使用boot2docker
- 使用標準VM安裝
- 在Ubuntu Linux下安裝Docker
- 使用本書所附的VM
- 手動安裝Docker
- 讓Docker更好用的工具
- 使用雲端專用CoreOS
- CoreOS簡介
- 建立自動登入的CoreOS
- 更換CoreOS不安全的ssh key
- 生產環境vSphere CoreOS
- 在公有雲端平台部署Docker