
0人評分過此書
Docker實戰6堂課:56個實驗動手做,掌握Linux容器核心技術
掌握容器原理,除錯更快速!
跟著實驗操作,帶你告別一知半解,深入了解 Container!
本書內容改編自第 14 屆 iThome 鐵人賽 DevOps 組的冠軍系列文章《那些關於 Docker 你知道與不知道的事》。本書從啟動 Docker Container 開始,探索 Docker 的底層設計,進而學習 Linux 容器技術及其相關的 Linux 知識,包括 Namespace、Process 與網路等,同時也提供各種動手做實驗,讓你親手驗證讀到的理論與技術。
書中將探討五大主題:
1. Docker Container
2. Docker Image
3. Linux Namespace
4. Linux Process 及其與 Docker Container 的關係
5. Container 與 Linux 的網路世界
全書提供 56 個動手做實驗,讓讀者能親自驗證學習到的理論,從「會用」進階到「知道」,讓 Docker 容器不再神秘,讓讀者不再心虛。讀者除了能熟悉 Docker,也能同時學習 Linux 相關知識,鞏固作業系統與網路的基本功,提升問題排查的能力,累積往下探索的基礎,讓未來的你也能自己動手挖掘底層技術。
四大重點:
▶ 打穩基礎
層層介紹 Docker 元素,清楚掌握底層原理
▶ 由淺入深
從環境建置到容器化,快速部署非難事
▶ 動手做範例
每章範例動手玩,加深理論與實力
▶ 大量圖文解說
白話文+圖解說明,讓你不再似懂非懂
目標讀者:
● 想學習 Docker 或容器化技術
● 會 Docker 的基本操作,但對於原理好像似懂非懂,想要深入學習
● 想學習更多 Linux,卻不知道該從哪裡開始
● 喜歡親自動手驗證的工程師
● 想從 Junior 晉升到 Senior 的工程師
專業推薦:
「無論你是初學者,還是已有一定基礎的工程師,這本書都會是你最好的指南和夥伴。讓我們一起跟隨這位經驗豐富的導師,從「會用」進階到「知道」,探索技術的深邃海洋。」
──── Shirney │ AppWorks School 校長
「容器生態圈蓬勃發展,我們更需要小賴這本書,帶我們透過自己的雙手掌握那不變的容器技術核心。」
──── 葉秉哲(William Yeh) │ 敏捷魔藥師
「小賴以深入淺出的方式,帶領讀者進一步探討這些技術。她用生動的文字和清晰的例子,讓你不僅能操作 Docker,而是能夠洞悉其本質。這不僅能讓你在開發過程中更加得心應手,更讓讀者之後對 container 相關技術 debug 的過程變得更加順暢。」
──── 顏永富(泳褲) │ Laravel 台灣 / DevOps Taiwan 社群老志工 / 全端工程師
跟著實驗操作,帶你告別一知半解,深入了解 Container!
本書內容改編自第 14 屆 iThome 鐵人賽 DevOps 組的冠軍系列文章《那些關於 Docker 你知道與不知道的事》。本書從啟動 Docker Container 開始,探索 Docker 的底層設計,進而學習 Linux 容器技術及其相關的 Linux 知識,包括 Namespace、Process 與網路等,同時也提供各種動手做實驗,讓你親手驗證讀到的理論與技術。
書中將探討五大主題:
1. Docker Container
2. Docker Image
3. Linux Namespace
4. Linux Process 及其與 Docker Container 的關係
5. Container 與 Linux 的網路世界
全書提供 56 個動手做實驗,讓讀者能親自驗證學習到的理論,從「會用」進階到「知道」,讓 Docker 容器不再神秘,讓讀者不再心虛。讀者除了能熟悉 Docker,也能同時學習 Linux 相關知識,鞏固作業系統與網路的基本功,提升問題排查的能力,累積往下探索的基礎,讓未來的你也能自己動手挖掘底層技術。
四大重點:
▶ 打穩基礎
層層介紹 Docker 元素,清楚掌握底層原理
▶ 由淺入深
從環境建置到容器化,快速部署非難事
▶ 動手做範例
每章範例動手玩,加深理論與實力
▶ 大量圖文解說
白話文+圖解說明,讓你不再似懂非懂
目標讀者:
● 想學習 Docker 或容器化技術
● 會 Docker 的基本操作,但對於原理好像似懂非懂,想要深入學習
● 想學習更多 Linux,卻不知道該從哪裡開始
● 喜歡親自動手驗證的工程師
● 想從 Junior 晉升到 Senior 的工程師
專業推薦:
「無論你是初學者,還是已有一定基礎的工程師,這本書都會是你最好的指南和夥伴。讓我們一起跟隨這位經驗豐富的導師,從「會用」進階到「知道」,探索技術的深邃海洋。」
──── Shirney │ AppWorks School 校長
「容器生態圈蓬勃發展,我們更需要小賴這本書,帶我們透過自己的雙手掌握那不變的容器技術核心。」
──── 葉秉哲(William Yeh) │ 敏捷魔藥師
「小賴以深入淺出的方式,帶領讀者進一步探討這些技術。她用生動的文字和清晰的例子,讓你不僅能操作 Docker,而是能夠洞悉其本質。這不僅能讓你在開發過程中更加得心應手,更讓讀者之後對 container 相關技術 debug 的過程變得更加順暢。」
──── 顏永富(泳褲) │ Laravel 台灣 / DevOps Taiwan 社群老志工 / 全端工程師
-
1 實驗環境準備
-
1.1 實驗環境
-
1.2 安裝步驟
-
1.3 實驗環境說明
-
觀察Mac中給Docker使用的虛擬機
-
-
-
2 建立Container
-
2.1 建立Container
-
實驗2-1:建立alpine container
-
-
2.2 查無此人的process
-
實驗2-2:殺掉Host中的ash process
-
-
2.3 其他Docker container指令
-
實驗清除
-
-
-
3 Docker Image
-
3.1 Docker Image初探
-
實驗3-1:觀察nginx image
-
實驗清除
-
-
3.2 什麼是Image Layer?
-
實驗3-2:自己做出新的一層layer
-
實驗清除
-
-
3.3 來玩一下Docker Image Layer
-
實驗3-3:修改UpperDir中的檔案內容並觀察其變化
-
實驗3-4:修改UpperDir中的檔案內容並建立新的image
-
實驗3-5:在container中增加新的檔案並建立新的image
-
實驗清除
-
-
3.4 Docker Image實驗解惑-OverlayFS
-
實驗3-6:使用OverlayFS來union mount檔案夾
-
-
3.5 什麼是copy-on-write跟whiteout?
-
實驗3-7:測試聯合目錄中的檔案
-
實驗3-8:測試聯合目錄中的檔案2
-
實驗清除
-
-
3.6 所以,到底什麼是Docker Image呢?
-
-
4 命名空間(Namespaces)
-
4.1 什麼是Namespaces?
-
4.2 PID Namespace
-
實驗4-1:手動建立出自己的namespace
-
實驗清除
-
-
4.3 用clone來建立新的PID namespace
-
實驗4-2:用clone來建立PID namespace
-
實驗清除
-
-
4.4 Mount Namespace的坑
-
實驗4-3:不使用mount-proc參數
-
實驗4-4:觀察/proc
-
實驗4-5:建立Mount namespace
-
實驗4-6:手動掛載/proc
-
-
4.5 Container與Namespaces
-
實驗4-7:從Host觀察container中的processes
-
實驗4-8:container的namespaces觀察
-
實驗清除
-
-
4.6 前景與背景
-
實驗4-9:以背景模式建立container
-
實驗清除
-
-
4.7 要怎麼「進入」container裡呢?
-
實驗4-10:驗證docker container exec指令
-
實驗4-11:setns的操作
-
實驗清除
-
-
-
5 Linux中的Process
-
5.1 認識Process
-
5.2 Process的族譜
-
實驗5-1:測試fork API
-
-
5.3 殭屍(zombie)與孤兒(orphan)
-
實驗5-2:parent process不呼叫waitpid
-
實驗5-3:parent process比child process先終止
-
實驗清除
-
-
5.4 Container中PID 1 process的parent是誰呢?
-
實驗5-4:container中PID 1 process的族譜
-
-
5.5 Container中的PID 1 process會負起init process的責任嗎?
-
實驗5-5:PR_SET_CHILD_SUBREAPER的測試
-
實驗5-6:container中的PID 1是否會負起責任
-
-
5.6 不負責任的PID 1 process
-
實驗5-7:以exec模式建立container
-
實驗5-8:以shell模式建立container
-
-
5.7 Linux中的訊號(signal)
-
5.8 signal & kill指令
-
實驗5-9:捕捉訊號(catch signal)
-
實驗清除
-
-
5.9 signal 與container
-
docker container stop
-
實驗5-10:驗證docker container stop指令的signal
-
實驗5-11:PID 1不正確處理SIGTERM
-
實驗5-12:docker container stop與shell mode
-
docker container kill
-
實驗5-13:docker container kill
-
docker container rm -f
-
-
5.10 Ubuntu中的/bin/sh怎麼了?
-
實驗5-14:alpine image的shell mode
-
實驗5-15:驗證dash shell
-
實驗5-16:init參數
-
-
5.11 PID 1的process能被殺掉嗎?
-
實驗5-17:在exec mode下kill container中的PID 1 process
-
實驗5-18:在shell mode下kill container中的PID 1 process
-
-
-
6 Container的網路世界
-
6.1 Container怎麼跟別人溝通的?
-
實驗6-1:Docker network-none
-
實驗6-2:Docker network-host
-
實驗6-3:Docker network-bridge
-
實驗6-4:Docker network-container
-
-
6.2 什麼是veth pair?
-
實驗6-5:手動建立veth pair
-
實驗清除
-
-
6.3 來過橋吧!
-
實驗6-6:透過bridge來連通兩個network namespace
-
實驗6-7:設定iptables讓封包可以過橋
-
-
6.4 能成功出海嗎?
-
實驗6-8:調整routing table
-
-
6.5 為什麼出不了國呢?
-
實驗6-9:從ns1 ping外部網路並錄製網路封包
-
-
6.6 讓我們出國去!
-
實驗6-10:觀察Host對外部網路的通信
-
實驗6-11:為ns1建立nat規則
-
實驗6-12:關掉無條件轉發
-
實驗6-13:為docker1調整FORWARD chain
-
-
6.7 解封國境
-
實驗6-14:測試外部是否可以連進ns1中
-
實驗6-15:觀察Docker對iptables做了什麼
-
從外部主機連線至container
-
實驗6-16:讓ns1裡的server可以被外部主機連接
-
在Host透過private IP連線至container
-
實驗6-17:讓ns1裡的server可以從Host透過private IP連線
-
Host透過loopback IP位址連線至container
-
-
- 後記
- 出版地 : 臺灣
- 語言 : 繁體中文
評分與評論
請登入後再留言與評分