预购商品
书目分类
特别推荐
致謝 推薦序 ── Shirney 推薦序 ── 葉秉哲(William Yeh) 推薦序 ── 顏永富(泳褲) 作者序 前言 第 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 後記
作者簡介 賴怡玲(小賴) 工作經驗約 20 年, 從工程師當到技術主管, 待過大、小公司,從金融業到各種新創,台商、外商都有經驗,也自己設立公司過。略懂前端,主要在後端與維運部署,接案時從業務、專案管理、技術團隊管理、前後端開發、部署維運到售後客服無所不包,業界俗稱的一條龍工程師。擅長從兵荒馬亂、資源有限的團隊中做出一些東西,喜歡容器技術、AWS。 擔任過 Laravel Conf、WebConf Taiwan 等議程講者,分享 Serverless 與 Docker 等主題。目前在 AppWorks School 擔任後端班導師,陪伴想要加入軟體開發領域的學員們成長。 【iThome 鐵人賽獲獎】 2022 DevOps 組冠軍:《那些關於 Docker 你知道與不知道的事》
最近浏览商品
客服公告
热门活动
订阅电子报