Logo

新人日誌

首頁關於我部落格

新人日誌

Logo

網站會不定期發佈技術筆記、職場心得相關的內容,歡迎關注本站!

網站
首頁關於我部落格
部落格
分類系列文

© 新人日誌. All rights reserved. 2020-present.

Docker Compose:up vs up -d 的差異與應用

最後更新:2025年3月4日架構

本文為 Docker 進階介紹 系列文,第 8 篇:

  1. 初學者指南:深入了解 WSL 2(Windows Subsystem for Linux 2)
  2. 虛擬機器(VM)是什麼?完整入門指南
  3. 什麼是核心(Kernel)?初學者完整指南
  4. Docker vs. 虛擬機器(VM):初學者完整比較指南
  5. 如何在 WSL 2 + Docker 環境中開發 Django:安裝順序與最佳實踐
  6. 初學者指南:什麼是 Dockerfile?—— 以實際範例解析
  7. Docker Compose 初學者指南:使用範例解析
  8. Docker Compose:up vs up -d 的差異與應用 👈進度
  9. Linux 常見指令入門:從 sudo 到日常操作
  10. Linux 解決方案:VSCode 無法儲存檔案權限問題

閱讀本文前,建議先理解 Docker 基本介紹系列文 相關概念。

Docker Compose 是 Docker 官方提供的工具,用來管理多容器應用。

當你有多個容器需要協作時,例如一個 Web 應用程式需要搭配資料庫,Docker Compose 能幫助你透過一個 YAML 設定檔 (docker-compose.yml) 來簡化啟動與管理這些容器。

在使用 Docker Compose 啟動容器時,最常見的指令是:

  • docker compose up
  • docker compose up -d

這兩者的主要區別在於是否在前台執行,而這個細微的差異可能會影響你的開發或部署流程。本文將詳細介紹它們的作用、適用場景以及如何選擇最適合的方式來執行你的容器應用。


docker compose up:前台模式

當你執行:

docker compose up

這個指令會:

  1. 啟動 docker-compose.yml 定義的所有容器。
  2. 顯示 容器的日誌輸出(Logs)在你的終端機上。
  3. 保持執行狀態,直到你手動終止它(通常使用 Ctrl + C)。

適用場景

  • 開發階段:當你正在開發某個應用,並且需要即時觀察日誌,來確保一切正常運行或快速偵錯。
  • 測試環境:如果你只想暫時啟動服務,在測試完成後就關閉,那麼前台模式是一個好選擇。

優缺點

✅ 優點

  • 能夠即時監控所有容器的日誌輸出,方便偵錯。
  • 容器關閉時,相關的所有資源(例如網路、Volume)會一併釋放,避免佔用不必要的系統資源。

❌ 缺點

  • 終端機會被佔用,無法執行其他指令。
  • 若意外關閉終端機,容器也會跟著停止。

docker compose up -d:背景模式

當你加上 -d 參數:

docker compose up -d

這個指令會:

  1. 啟動 docker-compose.yml 定義的所有容器。
  2. 不顯示 容器日誌輸出,而是直接將容器送入背景執行(Detached Mode)。
  3. 不會佔用終端機,即使關閉終端機,容器依然持續運行。

適用場景

  • 正式環境(Production):在正式環境中,通常不希望終端機一直開著,因此讓容器在背景運行是最佳選擇。
  • 長期運行的應用:如果你正在執行一個 Web 服務、資料庫或其他後端服務,那麼使用 -d 讓它持續運行是比較合理的做法。

優缺點

✅ 優點

  • 終端機不會被佔用,可以繼續執行其他指令或關閉終端機。
  • 容器持續運行,即使退出 SSH 連線,服務仍然可用。

❌ 缺點

  • 無法即時監控日誌輸出,必須使用 docker compose logs 來手動查看: docker compose logs -f
  • 若容器異常退出,你可能不會立即察覺,必須定期檢查狀態: docker compose ps

up vs up -d:總結比較

指令是否佔用終端機是否顯示日誌適用場景
docker compose up✅ 佔用✅ 顯示開發與偵錯
docker compose up -d❌ 不佔用❌ 不顯示部署與長期運行
是否佔用終端機✅ 佔用
是否顯示日誌✅ 顯示
適用場景開發與偵錯
是否佔用終端機❌ 不佔用
是否顯示日誌❌ 不顯示
適用場景部署與長期運行

選擇建議:

  • 開發與測試階段 → docker compose up
  • 正式部署或長期運行的應用 → docker compose up -d

如何管理背景模式運行的容器

如果你已經使用 docker compose up -d 啟動了容器,但後續需要管理或查看狀態,這裡有一些常用指令:

查看目前正在運行的容器

docker compose ps

查看日誌輸出

docker compose logs -f

這樣你仍然可以即時監控容器的輸出,類似於 docker compose up 的效果。

停止所有容器

docker compose down

這會停止所有由 docker-compose.yml 啟動的容器,並清除相關的網路與資源。

重啟容器

docker compose restart

如果你的容器需要更新設定或發生錯誤,可以使用這個指令來重新啟動它們。


結語

理解 docker compose up 和 docker compose up -d 的區別,可以幫助你更有效地管理 Docker 容器。

開發時,可以使用 docker compose up 來即時監控日誌與偵錯;當你的應用需要長時間運行時,則應該使用 docker compose up -d 來讓它在背景執行,確保服務穩定運行。

透過這些指令,你可以根據需求靈活地控制你的 Docker 應用,無論是在本機開發環境還是正式部署環境中都能夠得心應手!

目前還沒有留言,成為第一個留言的人吧!

發表留言

留言將在審核後顯示。

架構

目錄

  • docker compose up:前台模式
  • 適用場景
  • 優缺點
  • docker compose up -d:背景模式
  • 適用場景
  • 優缺點
  • up vs up -d:總結比較
  • 如何管理背景模式運行的容器
  • 查看目前正在運行的容器
  • 查看日誌輸出
  • 停止所有容器
  • 重啟容器
  • 結語