自己動手寫Docker

自己動手寫Docker pdf epub mobi txt 電子書 下載 2025

陳顯鷺
圖書標籤:
想要找書就要到 靜思書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!
第1章 容器與開發語言………………………………………………………………………1
1.1 Docker ………………………………………………………………………………1
1.1.1 簡介 …………………………………………………………………………1
1.1.2 容器和虛擬機比較 …………………………………………………………2
1.1.3 容器加速開發效率 …………………………………………………………3
1.1.4 利用容器閤作開發 …………………………………………………………4
1.1.5 利用容器快速擴容 …………………………………………………………4
1.1.6 安裝使用Docker ……………………………………………………………4
1.2 Go ……………………………………………………………………………………5
1.2.1 描述 …………………………………………………………………………5
1.2.2 安裝Go ………………………………………………………………………6
1.2.3 配置GOPATH ………………………………………………………………6
1.3 小結 …………………………………………………………………………………7
第2章 基礎技術………………………………………………………………………………8
2.1 Linux Namespace 介紹 ………………………………………………………………8
2.1.1 概念 …………………………………………………………………………8
2.1.2 UTS Namespace ………………………………………………………………10
2.1.3 IPC Namespace ………………………………………………………………11
2.1.4 PID Namespace ………………………………………………………………13
2.1.5 Mount Namespace ……………………………………………………………14
2.1.6 User Namespace ………………………………………………………………16
XII 自己動手寫 Docker
2.1.7 Network Namespace ………………………………………………………… 18
2.2 Linux Cgroups 介紹 ………………………………………………………………… 20
2.2.1 什麼是Linux Cgroups ……………………………………………………… 20
2.2.2 Docker 是如何使用Cgroups 的 …………………………………………… 24
2.2.3 用Go 語言實現通過cgroup 限製容器的資源 …………………………… 25
2.3 Union File System …………………………………………………………………… 26
2.3.1 什麼是Union File System …………………………………………………… 26
2.3.2 AUFS ………………………………………………………………………… 27
2.3.3 Docker 是如何使用AUFS 的 ……………………………………………… 27
2.3.4 自己動手寫AUFS…………………………………………………………… 34
2.4 小結 ………………………………………………………………………………… 37
第3 章 構造容器……………………………………………………………………………… 38
3.1 構造實現run 命令版本的容器 …………………………………………………… 38
3.1.1 Linux proc 文件係統介紹 …………………………………………………… 38
3.1.2 實現 run 命令 ……………………………………………………………… 39
3.2 增加容器資源限製 ………………………………………………………………… 45
3.2.1 定義Cgroups 的數據結構 ………………………………………………… 45
3.2.2 在啓動容器時增加資源限製的配置 ……………………………………… 51
3.3 增加管道及環境變量識彆 ………………………………………………………… 53
3.4 小結 ………………………………………………………………………………… 58
第4 章 構造鏡像……………………………………………………………………………… 59
4.1 使用busybox 創建容器 …………………………………………………………… 59
4.1.1 busybox ……………………………………………………………………… 59
4.1.2 pivot_root …………………………………………………………………… 60
4.2 使用AUFS 包裝busybox …………………………………………………………… 63
4.3 實現volume 數據捲 ………………………………………………………………… 67
4.4 實現簡單鏡像打包 ………………………………………………………………… 75
4.5 小結 ………………………………………………………………………………… 77
第5 章 構建容器進階………………………………………………………………………… 78
5.1 實現容器的後颱運行 ……………………………………………………………… 78
5.2 實現查看運行中容器 ……………………………………………………………… 82
5.2.1 準備數據 …………………………………………………………………… 82
5.2.2 實現mydocker ps …………………………………………………………… 87
5.3 實現查看容器日誌 ………………………………………………………………… 90
5.4 實現進入容器Namespace ………………………………………………………… 93
5.4.1 setns ………………………………………………………………………… 94
5.4.2 Cgo …………………………………………………………………………… 94
5.4.3 實現命令 …………………………………………………………………… 94
5.5 實現停止容器 ……………………………………………………………………… 100
5.6 實現刪除容器 ……………………………………………………………………… 104
5.7 實現通過容器製作鏡像 …………………………………………………………… 105
5.8 實現容器指定環境變量運行 ……………………………………………………… 117
5.8.1 修改runCommand …………………………………………………………… 117
5.8.2 修改Run 函數 ……………………………………………………………… 117
5.8.3 修改NewParentProcess 函數 ……………………………………………… 118
5.8.4 修改mydocker exec 命令 …………………………………………………… 119
5.9 小結 ………………………………………………………………………………… 121
第6 章 容器網絡……………………………………………………………………………… 122
6.1 網絡虛擬化技術介紹 ……………………………………………………………… 122
6.1.1 Linux 虛擬網絡設備 ………………………………………………………… 122
6.1.2 Linux 路由錶 ………………………………………………………………… 124
6.1.3 Linux iptables ………………………………………………………………… 126
6.1.4 Go 語言網絡庫介紹 ………………………………………………………… 127
6.2 構建容器網絡模型 ………………………………………………………………… 128
6.2.1 模型 ………………………………………………………………………… 128
6.2.2 調用關係 …………………………………………………………………… 130
6.3 容器地址分配 ……………………………………………………………………… 137
6.3.1 bitmap 算法介紹 …………………………………………………………… 138
6.3.2 數據結構定義 ……………………………………………………………… 138
6.3.3 地址分配的實現 …………………………………………………………… 140
6.3.4 地址釋放的實現 …………………………………………………………… 142
6.3.5 測試 ………………………………………………………………………… 142
6.4 創建Bridge 網絡 …………………………………………………………………… 144
6.4.1 Bridge Driver Create 實現 …………………………………………………… 144
6.4.2 Bridge Driver 初始化Linux Bridge 流程 …………………………………… 144
6.4.3 Bridge Driver Delete 實現 …………………………………………………… 148
6.4.4 測試 ………………………………………………………………………… 148
6.5 在Bridge 網絡創建容器 …………………………………………………………… 149
6.5.1 掛載容器端點的流程 ……………………………………………………… 150
6.5.2 測試 ………………………………………………………………………… 156
6.6 容器跨主機網絡 …………………………………………………………………… 159
6.6.1 跨主機容器網絡的IPAM …………………………………………………… 160
6.6.2 跨主機容器網絡通信的常見實現方式 …………………………………… 161
6.7 小結 ………………………………………………………………………………… 163
第7 章 高級實踐……………………………………………………………………………… 164
7.1 使用mydocker 創建一個可訪問的nginx 容器 …………………………………… 164
7.1.1 獲取nginx tar 包 …………………………………………………………… 164
7.1.2 構建自己的nginx 鏡像 ……………………………………………………… 165
7.1.3 運行mynginx 容器 ………………………………………………………… 167
7.2 使用mydocker 創建一個flask + redis 的計數器 ………………………………… 169
7.2.1 創建redis 容器 ……………………………………………………………… 169
7.2.2 製作flask 鏡像 ……………………………………………………………… 173
7.2.3 創建myflask 容器 …………………………………………………………… 176
7.3 runC ………………………………………………………………………………… 177
7.3.1 簡介 ………………………………………………………………………… 177
7.3.2 OCI 標準包(bundle) ……………………………………………………… 177
目錄XV
7.3.3 config.json …………………………………………………………………… 178
7.3.4 mounts ……………………………………………………………………… 178
7.3.5 process ……………………………………………………………………… 179
7.3.6 user …………………………………………………………………………… 179
7.3.7 hostname …………………………………………………………………… 180
7.3.8 platform ……………………………………………………………………… 180
7.3.9 鈎子(Hook) ……………………………………………………………… 181
7.4 runC 創建容器流程 ………………………………………………………………… 182
7.5 Docker containerd 項目介紹 ………………………………………………………… 186
7.5.1 架構 ………………………………………………………………………… 187
7.5.2 特性和路綫圖 ……………………………………………………………… 188
7.5.3 containerd 和Docker 之間的關係 ………………………………………… 188
7.5.4 containerd、OCI 和runC 之間的關係 ……………………………………… 188
7.5.5 containerd 和容器編排係統的關係 ………………………………………… 189
7.6 Kubernetes CRI 容器引擎 …………………………………………………………… 189
7.6.1 什麼是CRI ………………………………………………………………… 189
7.6.2 為什麼需要CRI …………………………………………………………… 193
7.6.3 為什麼CRI 是接口且是基於容器的而不是基於Pod 的 ………………… 193
7.6.4 如何使用CRI ……………………………………………………………… 193
7.6.5 CRI 的目標 ………………………………………………………………… 194
7.6.6 已知的問題 ………………………………………………………………… 194
7.7 小結 ………………………………………………………………………………… 195
· · · · · · (收起)

具體描述

本書在詳細分析Docker所依賴的技術棧的基礎上,一步一步地通過代碼實例,讓讀者可以自己循序漸進地用Go語言構建齣一個容器的引擎。不同於其他Docker原理介紹或代碼剖析的書籍,本書旨在提供給讀者一條動手路綫,一步一步地實現Docker的隔離性,構建Docker的鏡像、容器的生命周期及Docker的網絡等。本書涉及的代碼都托管在GitHub上,讀者可以對照書中的步驟從代碼層麵學習構建流程,從而精通整個容器技術棧。本書也對目前業界容器技術的方嚮和實現做瞭簡單介紹,以加深讀者對容器生態的認識和理解。

本書適閤對容器技術已經使用過或有一些瞭解,希望更深層次掌握容器技術原理和最佳實踐的讀者。

用戶評價

評分

評分

評分

評分

##加深對Docker和Linux的理解。。。

評分

評分

##原來都是使用linux下的虛擬化技術編寫的

評分

##從此Docker不再那麼神秘,一本可以和How Tomcat works媲美的好書。

評分

評分

##看完自覺很有收獲,但是想要用自己的話解釋還是很睏難。 不過,再用docker會有一種莫名的親切感/熟悉感.

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有