0人評分過此書

Docker實戰6堂課:56個實驗動手做,掌握Linux容器核心技術

出版日期
2023/09/08
閱讀格式
PDF
書籍分類
學科分類
ISBN
9786263335769

本館館藏

借閱規則
當前可使用人數 30
借閱天數 14
線上看 0
借閱中 0

計次服務

借閱規則
借閱天數 14
選擇分享方式

推薦本館採購書籍

您可以將喜歡的電子書推薦給圖書館,圖書館會參考讀者意見進行採購

讀者資料
圖書館
* 姓名
* 身分
系所
* E-mail
※ 我們會寄送一份副本至您填寫的Email中
電話
※ 電話格式為 區碼+電話號碼(ex. 0229235151)/ 手機格式為 0900111111
* 請輸入驗證碼
掌握容器原理,除錯更快速!
跟著實驗操作,帶你告別一知半解,深入了解 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
  • 後記

評分與評論

請登入後再留言與評分
幫助
您好,請問需要甚麼幫助呢?
使用指南

客服專線:0800-000-747

服務時間:週一至週五 AM 09:00~PM 06:00

loading