30天與 Docker 做好朋友:跟鯨魚先生一同探索開發者的大平台(iT邦幫忙鐵人賽系列書)(修訂版)
內容描述
以開發者為導向的 Docker 新手入門書!
☛介紹 Docker 如何建置、分享與執行的一條龍服務
☛應用 Docker 技術在開發的流程裡
☛採用手把手執行指令的方式,來說明 Docker 的各種基礎概念
◆重點資訊◆
為因應 Docker Desktop 已採有條件的訂閱收費制,修訂增註有關詳情與替代方案資訊。
【內容簡介】
本書內容改編自第12屆iT邦幫忙鐵人賽 DevOps 組佳作網路系列文章⸺《30天與鯨魚先生做好朋友》。Docker 是目前熱門的 DevOps 工具之一,能用簡單的方法來運行 Container 技術。本書是以開發者初次學習 Docker 的情境所設計的,最終期望讀者能真的在 30 天內了解並應用 Docker 在日常開發,讓開發階段能夠更加順利。
【三大漸進式學習主題】
■ 熟悉 Docker 基礎,了解如何操作 Docker
Docker 發展至今累積了非常多好用的 Image。學習 Docker 最便捷的方法是多用多看⸺多使用這些 Image,多觀察這些 Image 是如何運行的。本書提供大量的執行範例,讀者可以跟著一起執行指令確認結果,搭配章節的說明,即可更快了解 Docker 運作原理。
■ 創造 Docker Image,了解如何客製化 Image
網路上找到的 Image 不滿意嗎?或是根本找不到想要的 Image 嗎?那就自己建一個!本書以一個 Web 服務為範例,說明建置 Image 的過程,也介紹了完整的範例說明該如何將 Image 調整成最佳狀態;獨樂樂不如眾樂樂,建置好的 Image 如何分享給同事或網路上其他鄉民,也是學習Docker 的一大重點。
■ 深入了解 Docker 執行的原理
了解如何執行 Container 和建置 Image 後,即可應用在大多數開發場合。在一些複雜的情境裡,則會需要更加基礎的知識,如儲存空間或網路設定等。本書介紹了一些進階設定的方法和範例,讓讀者可以理解 Docker 如何使用硬體資源,進而了解 Container 該如何配置設定與除錯。
【專業推薦】
這是一本書如其人的 Docker 入門書,Miles 以紮(血)實(淚)的實務經驗為本,透過幽默易懂的方式,將自身的經驗轉化為他人容易消化吸收的成長食糧。這本由 Developer 撰寫給 Developers 的 Docker 新手入門書,值得推薦給所有需要立即踏進 Docker 世界的開發者。
————— 陳正瑋—————
(艦長) / DevOps Ta iwan 社群志工
《和艦長一起 30 天玩轉 GitLab(iT邦幫忙鐵人賽系列書)》作者
目錄大綱
Chapter 01 Docker 介紹
什麼時候會需要 Docker?
Docker 環境架設
驗證安裝
Chapter 02 哈囉!世界!
Docker 架構
hello world 背後的運作原理
不使用 docker run 指令
Chapter 03 使用 Docker 的指令建置環境
Container 管理小技巧
使用 port forwarding 開放服務
使用 Volume 同步檔案
使用 Network 連結 container
使用 environment 控制環境變數
Chapter 04 Container 實務應用
連接資料庫
資料庫 server 端
指令借我用一下
Docker 上跑就沒問題
小結
Chapter 05 運用 Docker Compose 組合 container
單一 container
多環境測試
連結多個 container
連結更多 container
Chapter 06 了解 Docker build 指令
Docker image 簡介
Dockerfile 與 docker bulid 指令
小結
Chapter 07 來實際打造 image 吧
初始化 Laravel
事前準備
Dockerfile 的第一手
設定路徑與原始碼
設定啟動 server 指令
Chapter 08 最佳化 Dockerfile
調整 build context
只安裝必要的工具與依賴
活用 cache
精簡 image
精簡 commit
使用 Multi-stage Build
Chapter 09 為各種框架 build image
Phoenix
Amber
Rocket
Lapis
Chapter 10 分享 image
Docker Hub
GitHub Container Registry
使用自架 Private Registry
其他 private registry 服務
透過 save / export 分享 image
Chapter 11 Docker 如何啟動 process
exec 模式與 shell 模式
觀察 docker exec 的情況
了解 CMD 與 ENTRYPOINT
CMD 的設計
ENTRYPOINT 的設計
純執行指令類型的 image
服務類型的 image
Chapter 12 如何運行多個 process
使用 docker exec
使用 shell script
使用 Supervisor
小結
Chapter 13 活用 ENV 與 ARG
ENV 的設計
ARG 的設計
ARG 與 ENV 混用
與 Multi-stage build 合併使用
小結
Chapter 14 Volume 進階用法
Volume 概念
應用
屬性設定
Volume driver
小結
Chapter 15 Network 手動配置
Network Drivers
預設的 Bridge 網路
自己開一個 bridge
host
container
none
小結
Chapter 16 Docker 與軟體開發方法
Continuous Integration
The Twelve-Factor App
Appendix A 指令補充說明
Appendix B 其他好用的指令
作者介紹
周建毅(Miles)
約十年的 PHP 開發經驗,也是 Laravel 框架的愛好者。自從在 2015 年發現了 Docker,就被它可以複製環境的建置方法所吸引。學習過程當然也踩了不少雷,大多都是因為對作業系統不夠理解,或是環境設定不夠了解造成的,這也是純開發者會比較少接觸的部分。
本著作的目標,正是想寫出能讓開發者很快進入 Docker 世界的教學,使更多開發者能少踩一點雷,並一同享受使用 Docker 所帶來的各種好處。