跳轉至

建立 2025-08-18 更新 2026-09-28

範例與作業

看懂和會做是兩回事。本頁提供四份由淺入深的練習,每份都寫清楚要做什麼、參考哪一頁、做到什麼程度算完成。建議依照順序練習,前一份的成果會在下一份用到。

作業 1:把自己的程式打包成容器

參考:Dockerfile 入門、Docker Compose

要做的事:

  1. 挑一個自己寫過的小網站。沒有的話,可以直接用 Docker Compose 的網頁計數器。
  2. 寫一份 Dockerfile 和 .dockerignore。
  3. 寫一份 compose.yaml,加入一個資料庫(Redis 或 Postgres),資料存在 Volume 裡。
  4. 用 docker compose up -d --build 啟動,確認網站可以正常使用。

完成的標準:

  • 執行 docker compose down 再 docker compose up -d,資料還在。
  • 只修改程式碼後重新建置,安裝套件的步驟顯示 CACHED。
  • 執行 docker compose exec <服務名稱> whoami,顯示的不是 root。

作業 2:用 Dev Containers 建立開發環境

參考:VS Code 開發流程

要做的事:

  1. 在作業 1 的專案加入 .devcontainer/devcontainer.json。
  2. 用 Reopen in Container 在容器裡打開專案。
  3. 在容器裡執行程式,並用瀏覽器打開。

完成的標準:

  • 你的電腦上即使沒有安裝 Python(或你用的程式語言),也能在 VS Code 裡執行專案。
  • 把專案交給同學,他打開後也能得到一樣的環境。

作業 3:用 Portainer 管理容器

參考:容器管理工具(Portainer 等)

要做的事:

  1. 安裝 Portainer,建立管理員帳號。
  2. 在 Stacks 貼上作業 1 的 compose.yaml(Image 需要先上傳到 Docker Hub,或改用現成的 Image)並部署。
  3. 在 Portainer 裡查看日誌、進入容器。

完成的標準:

  • 能在 Portainer 看到作業 1 的所有服務都在執行。
  • 不用終端機,就能重新啟動某個服務並查看它的日誌。

作業 4:建立兩台電腦的 Swarm

參考:Docker Swarm

要做的事:

  1. 準備兩台可以互相連線的電腦。沒有的話,可以用 Play with Docker 免費開兩台。
  2. 一台執行 docker swarm init,另一台用 docker swarm join 加入。
  3. 用 docker service create 建立一個 4 份的 nginx 服務。
  4. 用 docker service update --image 更新版本,觀察滾動更新的過程。

完成的標準:

  • docker service ps 顯示 4 個容器分散在兩台電腦上。
  • 更新版本的過程中,網站一直都能連線。

挑戰題

做完四份作業還想挑戰的話:

  • 用 GitHub Actions 在每次推送時自動建置 Image,並上傳到 GitHub Container Registry(參考 DevOps 與 CI/CD)。
  • 用 Docker Scout 或 Trivy 掃描你的 Image,試著把高風險漏洞降到零(參考 安全性與效能)。
  • 用多階段建置讓作業 1 的 Image 變得更小,比較前後的大小。

推薦影音

Getting Started with Docker

簡述:Docker 官方的完整工作坊(約 2 小時 40 分),跟著講師一步步把一個應用程式容器化,適合在開始作業 1 之前完整跟著做一遍。(Docker 官方)

更多影片請見 影音教學。