Docker
🐳 基本概念
Image(映像):唯讀模板,用於建立容器。
Container(容器):映像的執行個體,具有可寫層。
Volume:持久化儲存或主機與容器間共享檔案。
Network:容器彼此或對外的連線方式。
Dockerfile:定義映像的建置步驟。
🔧 安裝與版本檢查
# 檢查版本
docker version
# 系統資訊
docker info
# Compose 版本
docker compose version📦 映像管理
🚀 容器管理
docker run vs docker exec
docker run vs docker execdocker run
建立並啟動一個新的容器
第一次從映像啟動服務,或想要一個新的環境
docker run -it ubuntu bash
docker exec
在已存在且正在執行的容器內執行命令
需要進入背景服務容器檢查或除錯
docker exec -it myweb bash
📌 小提醒:
若容器背景模式啟動(
-d),要進去查看時就用docker exec。有些精簡映像(如
alpine)沒有bash,需改用sh:
常用旗標
-it
互動模式
-it bash
--rm
自動刪除
--rm
-d
背景執行
-d
-p
埠口對映
-p 8080:80
-v
掛載
-v $PWD/data:/data
-e
環境變數
-e MODE=prod
📂 Volume 與資料持久化
以上範例展示了 兩種資料掛載方式:
使用
docker volume create建立的 Volume 由 Docker 自行管理,適合資料庫或需要持久化的資料。即使容器被刪除,Volume 仍會保留。使用
-v ./path:/container/path建立的 Bind Mount 會直接把主機目錄掛載到容器內,常用於開發環境同步程式碼或靜態檔案。
簡單來說:開發時方便修改 → 用 Bind Mount;生產環境需要穩定與可攜性 → 用 Volume。
🌐 網路
以上範例示範了如何建立自訂的 bridge 網路 並讓容器加入。好處是容器之間可以透過 容器名稱 互相通訊,而不用記 IP。這樣在專案或服務中會更方便管理。
📝 Dockerfile 建置
🧹 清理與診斷
🔒 最佳實務
使用最小化映像(
-slim或alpine)。盡量避免 root,Dockerfile 可建立專用使用者。
機密資訊用
.env或 secrets,避免硬寫入映像。合理使用 volume 持久化資料。
在 CI/CD 中加上建置快取與自動測試。
📚 參考資源
Docker 官方文件:https://docs.docker.com/manuals/
Docker Hub 範例:benson1231
✅ 結語
本指南整合了基礎指令與進階實務,能快速上手並支援專案開發。可依需求擴充至 CI/CD、自動化測試或 GPU/生物資訊等情境。
Last updated