2025年2月21日 星期五

Docker 與Docker Compose 有什麼不同

 Docker 和 Docker Compose 主要的區別在於它們的用途和操作方式:

比較項目DockerDocker Compose
用途管理單個容器管理多個容器(編排)
使用方式docker run 指令啟動容器docker-compose.yml 設定並啟動多個容器
適用場景簡單應用、單一服務微服務架構、複雜應用
依賴管理需要手動處理容器依賴自動管理容器間的關聯
配置方式透過 CLI 參數指定透過 YAML 檔案配置


什麼是 Docker?

Docker 是一個用來管理容器的工具,可以讓你在不同環境中執行相同的應用程式。

示例:使用 Docker 啟動單個 MySQL 容器

docker run -d --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:latest

這個指令會:

  1. 從 Docker Hub 拉取 mysql:latest 映像檔。
  2. 建立一個名為 mysql 的容器。
  3. 設定 MYSQL_ROOT_PASSWORD 環境變數。
  4. 將主機的 3306 端口映射到容器的 3306。

但如果你有多個容器,例如 MySQL + PHP + Redis,你需要手動啟動並連接它們,這就變得很麻煩。



什麼是 Docker Compose?

Docker Compose 是一個編排工具,讓你能夠使用 docker-compose.yml 檔案來管理多個容器。

示例:使用 Docker Compose 啟動 MySQL + PHPMyAdmin

  1. 建立 docker-compose.yml

    version: '3.8'
    services: mysql: image: mysql:latest restart: always environment: MYSQL_ROOT_PASSWORD: root ports: - "3306:3306" phpmyadmin: image: phpmyadmin/phpmyadmin restart: always ports: - "8080:80" environment: PMA_HOST: mysql
  2. 啟動所有服務

    docker-compose up -d
    • 這會同時啟動 mysql 和 phpmyadmin,並自動設定它們的連線關係。
  3. 檢查運行中的容器

    docker-compose ps
  4. 停止並刪除所有容器

    docker-compose down


何時使用 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 容器的工具!

沒有留言:

張貼留言

[Docker]Docker Compose 如何安裝?需要有 Docker Desktop 嗎?

Docker Compose 安裝方式 Docker Compose 是一個 獨立的工具 ,用來編排和管理多個 Docker 容器。 你 不一定需要 Docker Desktop ,但 Docker Compose 需要 Docker Engine 來運行容器。 1️⃣ Dock...