開發者 Docker 指南:映像檔、容器與 Compose

DevOps2026-10-01TryQuickToolBox

作為開發者,您可能經常遇到環境不一致的困擾:「在我的機器上可以運行啊!」Docker 透過將應用程式打包成容器來解決這個問題。本指南將解釋 Docker 映像檔、容器和 Compose,幫助您一致地建置、交付和運行應用程式。

什麼是 Docker?

Docker 是一個用於在容器中開發、交付和運行應用程式的平台。容器是輕量、獨立、可執行的套件,包含運行軟體所需的一切:程式碼、執行環境、系統工具、程式庫和設定。

映像檔 vs. 容器

映像檔是一個唯讀範本,包含建立容器的指令。容器是映像檔的可執行實例。您可以從同一個映像檔建立多個容器,每個容器彼此隔離。

使用映像檔

映像檔是從 Dockerfile 建置的,Dockerfile 是一個包含指令的文字檔。以下是一個簡單的 Node.js 範例:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

使用以下指令建置映像檔:

docker build -t my-app .

列出映像檔:docker images

運行容器

從映像檔啟動容器:

docker run -d -p 3000:3000 --name my-container my-app

這會以分離模式(-d)運行容器,映射埠 3000,並將其命名為 my-container。

列出運行中的容器:docker ps

停止容器:docker stop my-container

移除容器:docker rm my-container

為什麼要使用 Docker Compose?

當您的應用程式依賴多個服務(資料庫、快取等)時,管理單個容器會變得繁瑣。Docker Compose 讓您使用 YAML 檔案定義和運行多容器應用程式。

Compose 檔案範例

建立 docker-compose.yml:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: example
    volumes:
      - postgres_data:/var/lib/postgresql/data
volumes:
  postgres_data:

啟動所有服務:docker compose up -d

停止並移除:docker compose down

開發者最佳實踐

常用指令速查表

指令說明
docker build -t name .從 Dockerfile 建置映像檔
docker run -p host:container image運行容器並映射埠
docker ps -a列出所有容器
docker exec -it container bash在運行中的容器內開啟 shell
docker compose up啟動 Compose 檔案中定義的服務
docker compose logs -f追蹤所有服務的日誌

常見問題

映像檔和容器有什麼區別?

映像檔是靜態範本;容器是該映像檔的運行實例。您可以從一個映像檔建立多個容器。

什麼時候應該使用 Docker Compose?

當您的應用程式需要多個服務(例如網頁伺服器、資料庫、快取)一起運行時,請使用 Compose。它簡化了開發和測試的協作。

如何在 Docker 中持久化資料?

使用卷冊或綁定掛載。卷冊由 Docker 管理並儲存在專用區域;綁定掛載連結到主機目錄。兩者都能在容器重新啟動後保留資料。

準備好簡化您的 Docker 工作流程了嗎?試試我們的 Nginx 日誌分析器 來快速除錯容器日誌。