舉報

會員
Docker源碼分析
最新章節:
17.5 總結
本書是一本引導讀者深入了解Docker實現原理的技術普及讀物,主要目標是通過對Docker架構和源代碼的詳細講解和解剖,幫助讀者對Docker的底層實現有一個全面的理解。本書的內容主要集中于三部分:Docker的架構、Docker的模塊,以及Docker的三駕馬車Swarm、Machine和Compose。第一部分(第1章)主要從宏觀的角度和讀者一起領略Docker的架構設計,并初步介紹架構中各模塊的職責。第二部分(第2~14章)是本書的主體部分,主要針對Docker中多個重要的模塊進行具體深入分析,包括DockerClient、DockerDaemon、DockerServer、Docker網絡、Docker鏡像、Docker容器等。讀者可以發現,Docker的模塊之間耦合度非常低,很適合循序漸進,層層深入。第2~8章主要從Docker軟件的架構入手,勾勒骨架;第9~11章集中于Docker鏡像技術,夯實基礎;第12~14章則進一步分析Docker容器的始末,闡述本質。第三部分(第15~17章)介紹Docker生態三駕馬車—Swarm、Machine和Compose。Docker擁有強大的單機能力,三駕馬車可以很好地補充Docker的跨主機能力以及部署能力。讀者可以通過這幾章感受Docker生態中其他功能強大的軟件。
- 17.5 總結 更新時間:2018-12-31 20:27:53
- 17.4.3 Compose與Swarm
- 17.4.2 Compose跨節點能力
- 17.4.1 Compose單機能力
- 17.4 Compose評價
- 17.3 Compose架構
- 17.2 Compose介紹
- 17.1 引言
- 第17章 Compose架構設計與實現
- 16.4 總結
- 16.3 Machine與Swarm的結合
- 16.2.6 Machine運行流程
- 16.2.5 Provisioner
- 16.2.4 Driver
- 16.2.3 Host
- 16.2.2 Store
- 16.2.1 Machine
- 16.2 Machine架構
- 16.1 引言
- 第16章 Machine架構設計與實現
- 15.4 總結
- 15.3.4 swarm list
- 15.3.3 swarm join
- 15.3.2 swarm manage
- 15.3.1 swarm create
- 15.3 Swarm命令
- 15.2.4 scheduler
- 15.2.3 node discovery
- 15.2.2 Docker Node
- 15.2.1 Swarm Node
- 15.2 Swarm架構
- 15.1 引言
- 第15章 Swarm架構設計與實現
- 14.4 總結
- 14.3.7 其他模塊
- 14.3.6 nsinit
- 14.3.5 設備
- 14.3.4 掛載
- 14.3.3 網絡
- 14.3.2 cgroup
- 14.3.1 namespace
- 14.3 libcontainer模塊分析
- 14.2 Docker、libcontainer以及LXC的關系
- 14.1 引言
- 第14章 libcontainer介紹
- 13.6 總結
- 13.5.6 dockerinit執行用戶命令Entrypoint
- 13.5.5 dockerinit完成namespace配置
- 13.5.4 dockerinit初始化mount namespace
- 13.5.3 dockerinit配置網絡棧
- 13.5.2 Docker Daemon創建網絡棧資源
- 13.5.1 Docker Daemon設置cgroups參數
- 13.5 libcontainer的運行
- 13.4.2 dockerinit的執行流程
- 13.4.1 reexec.Init()的分析
- 13.4 dockerinit運行
- 13.3.2 namespace.exec
- 13.3.1 createCommand分析
- 13.3 dockerinit執行入口
- 13.2.2 dockerinit與Docker Daemon
- 13.2.1 dockerinit初始化內容
- 13.2 dockerinit介紹
- 13.1 引言
- 第13章 dockerinit啟動
- 12.5 總結
- 12.4.11 waitForStart
- 12.4.10 setupMountsForContainer
- 12.4.9 populateCommand
- 12.4.8 createDaemonEnvironment
- 12.4.7 setupWorkingDirectory
- 12.4.6 setupLinkedContainers
- 12.4.5 prepareVolumesForContainer
- 12.4.4 verifyDaemonSetting
- 12.4.3 initializeNetworking
- 12.4.2 Mount
- 12.4.1 setupContainerDns
- 12.4 Docker Daemon啟動容器
- 12.3.7 Register
- 12.3.6 ToDisk
- 12.3.5 createRootfs
- 12.3.4 newContainer
- 12.3.3 mergeAndVerifyConfig
- 12.3.2 CheckDepth
- 12.3.1 LookupImage
- 12.3 Docker Daemon創建容器對象
- 12.2 Docker容器運行流程
- 12.1 引言
- 第12章 Docker容器創建
- 11.5 總結
- 11.4.3 ENV命令
- 11.4.2 RUN命令
- 11.4.1 FROM命令
- 11.4 Dockerfile命令分析
- 11.3 Dockerfile命令解析流程
- 11.2.3 Docker Daemon與docker build
- 11.2.2 Docker Server與docker build
- 11.2.1 Docker Client與docker build
- 11.2 docker build執行流程
- 11.1 引言
- 第11章 docker build實現
- 10.7 總結
- 10.6 注冊鏡像ID
- 10.5.3 存儲jsonData信息
- 10.5.2 收集鏡像大小并記錄
- 10.5.1 解壓鏡像內容
- 10.5 存儲鏡像內容
- 10.4.2 掛載祖先鏡像并返回根目錄
- 10.4.1 創建mnt、diff和layers子目錄
- 10.4 創建鏡像路徑
- 10.3 驗證鏡像ID
- 10.2 鏡像注冊
- 10.1 引言
- 第10章 Docker鏡像存儲
- 9.6 總結
- 9.5.3 執行鏡像下載
- 9.5.2 創建session對象
- 9.5.1 解析Job參數
- 9.5 Docker Daemon
- 9.4.3 觸發執行Job
- 9.4.2 創建并配置Job
- 9.4.1 解析請求參數
- 9.4 Docker Server
- 9.3.3 發送API請求
- 9.3.2 配置認證信息
- 9.3.1 解析鏡像參數
- 9.3 Docker Client
- 9.2 Docker鏡像下載流程
- 9.1 引言
- 第9章 Docker鏡像下載
- 8.7 總結
- 8.6 layer
- 8.5 image
- 8.4 Union Mount
- 8.3 rootfs
- 8.2 Docker鏡像介紹
- 8.1 引言
- 第8章 Docker鏡像
- 7.7 總結
- 7.6.3 為容器進程初始化網絡環境
- 7.6.2 啟動exec.Cmd創建進程
- 7.6.1 創建exec.Cmd
- 7.6 libcontainer實現內核態網絡配置
- 7.5.2 調用libcontainer的namespaces啟動容器
- 7.5.1 創建libcontainer的Config對象
- 7.5 execdriver網絡執行流程
- 7.4.2 啟動容器之網絡配置
- 7.4.1 創建容器之網絡配置
- 7.4 Docker Daemon創建容器網絡流程
- 7.3.3 CmdRun執行
- 7.3.2 runconfig包解析
- 7.3.1 使用Docker Client
- 7.3 Docker Client配置容器網絡模式
- 7.2.4 none模式
- 7.2.3 other container模式
- 7.2.2 host模式
- 7.2.1 bridge橋接模式
- 7.2 Docker容器網絡模式
- 7.1 引言
- 第7章 Docker容器網絡
- 6.6 總結
- 6.5.9 注冊網絡Handler
- 6.5.8 配置網絡設備間數據報轉發功能
- 6.5.7 配置Docker Daemon的iptables
- 6.5.6 獲取網橋設備的網絡地址
- 6.5.5 bridgeIface未創建
- 6.5.4 bridgeIface已創建
- 6.5.3 查找bridgeIface網橋設備
- 6.5.2 確定Docker網橋設備名
- 6.5.1 提取環境變量
- 6.5 創建Docker網橋
- 6.4.4 確定Docker網絡模式
- 6.4.3 預處理flag參數
- 6.4.2 解析網絡flag參數
- 6.4.1 啟動Docker Daemon傳遞flag參數
- 6.4 Docker Daemon網絡初始化
- 6.3 Docker Daemon網絡配置接口
- 6.2 Docker Daemon網絡介紹
- 6.1 引言
- 第6章 Docker Daemon網絡
- 5.5 總結
- 5.4.4 啟動API服務
- 5.4.3 創建http.Server
- 5.4.2 創建listener監聽實例
- 5.4.1 創建router路由實例
- 5.4 ListenAndServe實現
- 5.3 ServeApi運行流程
- 5.2.3 運行Job
- 5.2.2 配置Job環境變量
- 5.2.1 創建名為“serveapi”的Job
- 5.2 Docker Server創建流程
- 5.1 引言
- 第5章 Docker Server的創建
- 4.15 總結
- 4.14 返回daemon對象實例
- 4.13 設置shutdown的處理方法
- 4.12 啟動時加載已有Docker容器
- 4.11 檢測DNS配置
- 4.10 創建daemon實例
- 4.9 創建execdriver
- 4.8 創建graphdb并初始化
- 4.7.5 注冊處理方法至Engine
- 4.7.4 創建DOCKER鏈
- 4.7.3 啟用系統數據包轉發功能
- 4.7.2 啟用iptables功能
- 4.7.1 創建Docker網絡設備
- 4.7 配置Docker Daemon網絡環境
- 4.6.7 創建TagStore
- 4.6.6 創建volumesdriver以及volumes graph
- 4.6.5 創建鏡像graph
- 4.6.4 遷移容器至aufs類型
- 4.6.3 創建容器倉庫目錄
- 4.6.2 驗證btrfs與SELinux的兼容性
- 4.6.1 創建graphdriver
- 4.6 加載并配置graphdriver
- 4.5 配置工作路徑
- 4.4 檢測系統支持及用戶權限
- 4.3.5 處理PID文件配置
- 4.3.4 處理網絡功能配置
- 4.3.3 查驗容器間的通信配置
- 4.3.2 檢測網橋配置信息
- 4.3.1 配置Docker容器的MTU
- 4.3 應用配置信息
- 4.2 NewDaemon具體實現
- 4.1 引言
- 第4章 Docker Daemon之NewDaemon實現
- 3.4 總結
- 3.3.8 serveapi的創建與運行
- 3.3.7 打印Docker版本及驅動信息
- 3.3.6 使用goroutine加載daemon對象并運行
- 3.3.5 加載builtins
- 3.3.4 設置engine的信號捕獲
- 3.3.3 創建engine對象
- 3.3.2 flag參數檢查
- 3.3.1 配置初始化
- 3.3 mainDaemon()的具體實現
- 3.2 Docker Daemon的啟動流程
- 3.1 引言
- 第3章 啟動Docker Daemon
- 2.4 總結
- 2.3.2 Docker Client執行請求命令
- 2.3.1 Docker Client解析請求命令
- 2.3 Docker命令執行
- 2.2.3 如何創建Docker Client
- 2.2.2 處理flag信息并收集Docker Client的配置信息
- 2.2.1 Docker命令的flag參數解析
- 2.2 創建Docker Client
- 2.1 引言
- 第2章 Docker Client創建與命令執行
- 1.5 總結
- 1.4.2 docker run
- 1.4.1 docker pull
- 1.4 Docker運行案例分析
- 1.3.7 Docker Container
- 1.3.6 libcontainer
- 1.3.5 Driver
- 1.3.4 Graph
- 1.3.3 Docker Registry
- 1.3.2 Docker Daemon
- 1.3.1 Docker Client
- 1.3 Docker各模塊功能與實現分析
- 1.2 Docker總架構圖
- 1.1 引言
- 第1章 Docker架構
- 前言
- 序
- 贊譽
- 版權信息
- 封面
- 封面
- 版權信息
- 贊譽
- 序
- 前言
- 第1章 Docker架構
- 1.1 引言
- 1.2 Docker總架構圖
- 1.3 Docker各模塊功能與實現分析
- 1.3.1 Docker Client
- 1.3.2 Docker Daemon
- 1.3.3 Docker Registry
- 1.3.4 Graph
- 1.3.5 Driver
- 1.3.6 libcontainer
- 1.3.7 Docker Container
- 1.4 Docker運行案例分析
- 1.4.1 docker pull
- 1.4.2 docker run
- 1.5 總結
- 第2章 Docker Client創建與命令執行
- 2.1 引言
- 2.2 創建Docker Client
- 2.2.1 Docker命令的flag參數解析
- 2.2.2 處理flag信息并收集Docker Client的配置信息
- 2.2.3 如何創建Docker Client
- 2.3 Docker命令執行
- 2.3.1 Docker Client解析請求命令
- 2.3.2 Docker Client執行請求命令
- 2.4 總結
- 第3章 啟動Docker Daemon
- 3.1 引言
- 3.2 Docker Daemon的啟動流程
- 3.3 mainDaemon()的具體實現
- 3.3.1 配置初始化
- 3.3.2 flag參數檢查
- 3.3.3 創建engine對象
- 3.3.4 設置engine的信號捕獲
- 3.3.5 加載builtins
- 3.3.6 使用goroutine加載daemon對象并運行
- 3.3.7 打印Docker版本及驅動信息
- 3.3.8 serveapi的創建與運行
- 3.4 總結
- 第4章 Docker Daemon之NewDaemon實現
- 4.1 引言
- 4.2 NewDaemon具體實現
- 4.3 應用配置信息
- 4.3.1 配置Docker容器的MTU
- 4.3.2 檢測網橋配置信息
- 4.3.3 查驗容器間的通信配置
- 4.3.4 處理網絡功能配置
- 4.3.5 處理PID文件配置
- 4.4 檢測系統支持及用戶權限
- 4.5 配置工作路徑
- 4.6 加載并配置graphdriver
- 4.6.1 創建graphdriver
- 4.6.2 驗證btrfs與SELinux的兼容性
- 4.6.3 創建容器倉庫目錄
- 4.6.4 遷移容器至aufs類型
- 4.6.5 創建鏡像graph
- 4.6.6 創建volumesdriver以及volumes graph
- 4.6.7 創建TagStore
- 4.7 配置Docker Daemon網絡環境
- 4.7.1 創建Docker網絡設備
- 4.7.2 啟用iptables功能
- 4.7.3 啟用系統數據包轉發功能
- 4.7.4 創建DOCKER鏈
- 4.7.5 注冊處理方法至Engine
- 4.8 創建graphdb并初始化
- 4.9 創建execdriver
- 4.10 創建daemon實例
- 4.11 檢測DNS配置
- 4.12 啟動時加載已有Docker容器
- 4.13 設置shutdown的處理方法
- 4.14 返回daemon對象實例
- 4.15 總結
- 第5章 Docker Server的創建
- 5.1 引言
- 5.2 Docker Server創建流程
- 5.2.1 創建名為“serveapi”的Job
- 5.2.2 配置Job環境變量
- 5.2.3 運行Job
- 5.3 ServeApi運行流程
- 5.4 ListenAndServe實現
- 5.4.1 創建router路由實例
- 5.4.2 創建listener監聽實例
- 5.4.3 創建http.Server
- 5.4.4 啟動API服務
- 5.5 總結
- 第6章 Docker Daemon網絡
- 6.1 引言
- 6.2 Docker Daemon網絡介紹
- 6.3 Docker Daemon網絡配置接口
- 6.4 Docker Daemon網絡初始化
- 6.4.1 啟動Docker Daemon傳遞flag參數
- 6.4.2 解析網絡flag參數
- 6.4.3 預處理flag參數
- 6.4.4 確定Docker網絡模式
- 6.5 創建Docker網橋
- 6.5.1 提取環境變量
- 6.5.2 確定Docker網橋設備名
- 6.5.3 查找bridgeIface網橋設備
- 6.5.4 bridgeIface已創建
- 6.5.5 bridgeIface未創建
- 6.5.6 獲取網橋設備的網絡地址
- 6.5.7 配置Docker Daemon的iptables
- 6.5.8 配置網絡設備間數據報轉發功能
- 6.5.9 注冊網絡Handler
- 6.6 總結
- 第7章 Docker容器網絡
- 7.1 引言
- 7.2 Docker容器網絡模式
- 7.2.1 bridge橋接模式
- 7.2.2 host模式
- 7.2.3 other container模式
- 7.2.4 none模式
- 7.3 Docker Client配置容器網絡模式
- 7.3.1 使用Docker Client
- 7.3.2 runconfig包解析
- 7.3.3 CmdRun執行
- 7.4 Docker Daemon創建容器網絡流程
- 7.4.1 創建容器之網絡配置
- 7.4.2 啟動容器之網絡配置
- 7.5 execdriver網絡執行流程
- 7.5.1 創建libcontainer的Config對象
- 7.5.2 調用libcontainer的namespaces啟動容器
- 7.6 libcontainer實現內核態網絡配置
- 7.6.1 創建exec.Cmd
- 7.6.2 啟動exec.Cmd創建進程
- 7.6.3 為容器進程初始化網絡環境
- 7.7 總結
- 第8章 Docker鏡像
- 8.1 引言
- 8.2 Docker鏡像介紹
- 8.3 rootfs
- 8.4 Union Mount
- 8.5 image
- 8.6 layer
- 8.7 總結
- 第9章 Docker鏡像下載
- 9.1 引言
- 9.2 Docker鏡像下載流程
- 9.3 Docker Client
- 9.3.1 解析鏡像參數
- 9.3.2 配置認證信息
- 9.3.3 發送API請求
- 9.4 Docker Server
- 9.4.1 解析請求參數
- 9.4.2 創建并配置Job
- 9.4.3 觸發執行Job
- 9.5 Docker Daemon
- 9.5.1 解析Job參數
- 9.5.2 創建session對象
- 9.5.3 執行鏡像下載
- 9.6 總結
- 第10章 Docker鏡像存儲
- 10.1 引言
- 10.2 鏡像注冊
- 10.3 驗證鏡像ID
- 10.4 創建鏡像路徑
- 10.4.1 創建mnt、diff和layers子目錄
- 10.4.2 掛載祖先鏡像并返回根目錄
- 10.5 存儲鏡像內容
- 10.5.1 解壓鏡像內容
- 10.5.2 收集鏡像大小并記錄
- 10.5.3 存儲jsonData信息
- 10.6 注冊鏡像ID
- 10.7 總結
- 第11章 docker build實現
- 11.1 引言
- 11.2 docker build執行流程
- 11.2.1 Docker Client與docker build
- 11.2.2 Docker Server與docker build
- 11.2.3 Docker Daemon與docker build
- 11.3 Dockerfile命令解析流程
- 11.4 Dockerfile命令分析
- 11.4.1 FROM命令
- 11.4.2 RUN命令
- 11.4.3 ENV命令
- 11.5 總結
- 第12章 Docker容器創建
- 12.1 引言
- 12.2 Docker容器運行流程
- 12.3 Docker Daemon創建容器對象
- 12.3.1 LookupImage
- 12.3.2 CheckDepth
- 12.3.3 mergeAndVerifyConfig
- 12.3.4 newContainer
- 12.3.5 createRootfs
- 12.3.6 ToDisk
- 12.3.7 Register
- 12.4 Docker Daemon啟動容器
- 12.4.1 setupContainerDns
- 12.4.2 Mount
- 12.4.3 initializeNetworking
- 12.4.4 verifyDaemonSetting
- 12.4.5 prepareVolumesForContainer
- 12.4.6 setupLinkedContainers
- 12.4.7 setupWorkingDirectory
- 12.4.8 createDaemonEnvironment
- 12.4.9 populateCommand
- 12.4.10 setupMountsForContainer
- 12.4.11 waitForStart
- 12.5 總結
- 第13章 dockerinit啟動
- 13.1 引言
- 13.2 dockerinit介紹
- 13.2.1 dockerinit初始化內容
- 13.2.2 dockerinit與Docker Daemon
- 13.3 dockerinit執行入口
- 13.3.1 createCommand分析
- 13.3.2 namespace.exec
- 13.4 dockerinit運行
- 13.4.1 reexec.Init()的分析
- 13.4.2 dockerinit的執行流程
- 13.5 libcontainer的運行
- 13.5.1 Docker Daemon設置cgroups參數
- 13.5.2 Docker Daemon創建網絡棧資源
- 13.5.3 dockerinit配置網絡棧
- 13.5.4 dockerinit初始化mount namespace
- 13.5.5 dockerinit完成namespace配置
- 13.5.6 dockerinit執行用戶命令Entrypoint
- 13.6 總結
- 第14章 libcontainer介紹
- 14.1 引言
- 14.2 Docker、libcontainer以及LXC的關系
- 14.3 libcontainer模塊分析
- 14.3.1 namespace
- 14.3.2 cgroup
- 14.3.3 網絡
- 14.3.4 掛載
- 14.3.5 設備
- 14.3.6 nsinit
- 14.3.7 其他模塊
- 14.4 總結
- 第15章 Swarm架構設計與實現
- 15.1 引言
- 15.2 Swarm架構
- 15.2.1 Swarm Node
- 15.2.2 Docker Node
- 15.2.3 node discovery
- 15.2.4 scheduler
- 15.3 Swarm命令
- 15.3.1 swarm create
- 15.3.2 swarm manage
- 15.3.3 swarm join
- 15.3.4 swarm list
- 15.4 總結
- 第16章 Machine架構設計與實現
- 16.1 引言
- 16.2 Machine架構
- 16.2.1 Machine
- 16.2.2 Store
- 16.2.3 Host
- 16.2.4 Driver
- 16.2.5 Provisioner
- 16.2.6 Machine運行流程
- 16.3 Machine與Swarm的結合
- 16.4 總結
- 第17章 Compose架構設計與實現
- 17.1 引言
- 17.2 Compose介紹
- 17.3 Compose架構
- 17.4 Compose評價
- 17.4.1 Compose單機能力
- 17.4.2 Compose跨節點能力
- 17.4.3 Compose與Swarm
- 17.5 總結 更新時間:2018-12-31 20:27:53