Docker 和 Docker Compose 主要的區別在於它們的用途和操作方式:
比較項目 | Docker | Docker Compose |
---|---|---|
用途 | 管理單個容器 | 管理多個容器(編排) |
使用方式 | docker run 指令啟動容器 | docker-compose.yml 設定並啟動多個容器 |
適用場景 | 簡單應用、單一服務 | 微服務架構、複雜應用 |
依賴管理 | 需要手動處理容器依賴 | 自動管理容器間的關聯 |
配置方式 | 透過 CLI 參數指定 | 透過 YAML 檔案配置 |
什麼是 Docker?
Docker 是一個用來管理容器的工具,可以讓你在不同環境中執行相同的應用程式。
示例:使用 Docker 啟動單個 MySQL 容器
這個指令會:
- 從 Docker Hub 拉取
mysql:latest
映像檔。 - 建立一個名為
mysql
的容器。 - 設定
MYSQL_ROOT_PASSWORD
環境變數。 - 將主機的 3306 端口映射到容器的 3306。
但如果你有多個容器,例如 MySQL + PHP + Redis,你需要手動啟動並連接它們,這就變得很麻煩。
什麼是 Docker Compose?
Docker Compose 是一個編排工具,讓你能夠使用 docker-compose.yml
檔案來管理多個容器。
示例:使用 Docker Compose 啟動 MySQL + PHPMyAdmin
建立
docker-compose.yml
啟動所有服務
- 這會同時啟動
mysql
和phpmyadmin
,並自動設定它們的連線關係。
- 這會同時啟動
檢查運行中的容器
停止並刪除所有容器
何時使用 Docker? 何時使用 Docker Compose?
✅ 使用 Docker 當你:
- 只需要單個容器,例如一個 Nginx 或 MySQL。
- 想要快速測試某個映像檔。
✅ 使用 Docker Compose 當你:
- 需要多個容器,例如 Web 應用 + 資料庫 + Redis。
- 想要自動管理依賴關係,例如 Kafka + Zookeeper。
- 想要更容易維護與分享專案,只需提供
docker-compose.yml
。
總結
場景 | 推薦使用 |
---|---|
只需啟動一個容器(如 MySQL) | Docker |
需要多個容器(如 Web + DB + Cache) | Docker Compose |
想要手動控制每個容器 | Docker |
想要自動化啟動整個應用 | Docker Compose |
簡單來說:Docker 是基礎,Docker Compose 是幫助你一次管理多個 Docker 容器的工具!
沒有留言:
張貼留言