最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

docker compose和docker-compose的區(qū)別及使用說明

 更新時間:2026年01月12日 16:07:04   作者:techzhi  
Docker Compose V2 是 Docker Compose V1 的替代品,使用 Go 語言編譯,性能更好,資源占用更低,新特性包括 Watch 模式、等待服務就緒、環(huán)境隔離、更好的依賴控制、并行構建和 DryRun 模式,V2 兼容 V1 的 compose 文件格式,遷移簡單

1. 概述

項目V1V2
命令docker-composedocker compose
實現(xiàn)語言PythonGo
安裝方式獨立二進制Docker CLI 插件
維護狀態(tài)已停止維護官方主推
本機版本-v5.0.1

2. 性能對比

2.1 啟動速度

場景V1V2提升
命令冷啟動~1.5s~0.3s5x
啟動 10 個服務~8s~2s4x
構建鏡像串行為主并行 + BuildKit2-3x

原因: V1 依賴 Python 解釋器啟動,V2 是 Go 編譯的原生二進制。

2.2 資源占用

V1: docker-compose up
  └── Python 進程 ~50-80MB 內存

V2: docker compose up
  └── Go 二進制 ~15-25MB 內存

3. 新功能詳解與案例

3.1 Watch 模式(開發(fā)熱重載)

場景: 前端/后端開發(fā)時,修改代碼自動重建容器。

# docker-compose.yml
services:
  web:
    build: .
    ports:
      - "3000:3000"
    develop:
      watch:
        # 修改源碼 -> 同步到容器
        - path: ./src
          action: sync
          target: /app/src

        # 修改 package.json -> 重新構建鏡像
        - path: ./package.json
          action: rebuild

        # 修改配置 -> 重啟容器
        - path: ./config
          action: sync+restart
          target: /app/config

使用:

docker compose watch

效果:

  • 修改 src/ 下文件 → 自動同步到容器,無需重啟
  • 修改 package.json → 自動重新 build 鏡像并重啟
  • 修改 config/ → 同步文件并重啟容器

V1 對比: 需要借助第三方工具(nodemon、air)或手動重啟。

3.2 --wait 等待服務就緒

場景: CI/CD 流程中,確保服務完全啟動后再執(zhí)行測試。

# docker-compose.yml
services:
  db:
    image: postgres:15
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  api:
    build: .
    depends_on:
      db:
        condition: service_healthy

V1 方式(繁瑣):

docker-compose up -d
# 需要自己寫循環(huán)等待
while ! docker-compose exec db pg_isready; do sleep 1; done
npm test

V2 方式(簡潔):

docker compose up -d --wait
# 命令會阻塞,直到所有服務健康檢查通過
npm test

3.3 Profiles 環(huán)境隔離

場景: 同一個 compose 文件,區(qū)分開發(fā)/測試/調試環(huán)境。

# docker-compose.yml
services:
  # 核心服務 - 始終啟動
  web:
    image: nginx
    ports:
      - "80:80"

  api:
    build: ./api
    ports:
      - "8080:8080"

  db:
    image: postgres:15
    volumes:
      - db_data:/var/lib/postgresql/data

  # 調試工具 - 僅調試時啟動
  pgadmin:
    image: dpage/pgadmin4
    ports:
      - "5050:80"
    profiles: ["debug"]

  # 性能監(jiān)控 - 僅監(jiān)控時啟動
  prometheus:
    image: prom/prometheus
    profiles: ["monitoring"]

  grafana:
    image: grafana/grafana
    profiles: ["monitoring"]

  # 測試服務 - 僅測試時啟動
  test-runner:
    build: ./tests
    profiles: ["test"]

volumes:
  db_data:

使用方式:

# 日常開發(fā) - 只啟動核心服務
docker compose up -d
# 啟動: web, api, db

# 需要調試數(shù)據(jù)庫
docker compose --profile debug up -d
# 啟動: web, api, db, pgadmin

# 性能監(jiān)控
docker compose --profile monitoring up -d
# 啟動: web, api, db, prometheus, grafana

# 運行測試
docker compose --profile test up -d
# 啟動: web, api, db, test-runner

# 組合多個 profile
docker compose --profile debug --profile monitoring up -d
# 啟動: web, api, db, pgadmin, prometheus, grafana

V1 對比: 需要維護多個 compose 文件(docker-compose.yml, docker-compose.debug.yml 等)。

3.4 更好的依賴控制

場景: API 服務必須等數(shù)據(jù)庫和 Redis 都就緒才能啟動。

# docker-compose.yml
services:
  db:
    image: postgres:15
    healthcheck:
      test: ["CMD", "pg_isready", "-U", "postgres"]
      interval: 5s
      timeout: 5s
      retries: 5

  redis:
    image: redis:7
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 5s
      timeout: 3s
      retries: 5

  api:
    build: ./api
    depends_on:
      db:
        condition: service_healthy    # 等 db 健康檢查通過
        restart: true                 # db 重啟時 api 也重啟
      redis:
        condition: service_healthy
    ports:
      - "8080:8080"

  worker:
    build: ./worker
    depends_on:
      api:
        condition: service_started    # api 啟動即可,不等健康檢查
      redis:
        condition: service_healthy

依賴條件:

condition說明
service_started容器啟動即滿足(默認)
service_healthy健康檢查通過才滿足
service_completed_successfully容器成功退出(exit 0)

V1 對比: 只支持 service_started,無法等待健康檢查。

3.5 并行構建與 BuildKit

場景: 多服務項目,加速鏡像構建。

# docker-compose.yml
services:
  frontend:
    build:
      context: ./frontend
      cache_from:
        - frontend:cache

  backend:
    build:
      context: ./backend
      cache_from:
        - backend:cache

  worker:
    build: ./worker

V2 構建優(yōu)勢:

# 并行構建所有服務
docker compose build --parallel

# 顯示構建進度
docker compose build --progress=plain

# 不使用緩存
docker compose build --no-cache

# 只構建指定服務
docker compose build frontend backend

BuildKit 特性(V2 默認啟用):

  • 并行執(zhí)行無依賴的構建步驟
  • 智能緩存(只重建變化的層)
  • 構建密鑰安全傳遞(–secret)
  • 多平臺構建(–platform)

3.6 Dry Run 模式

場景: 執(zhí)行命令前預覽會發(fā)生什么。

# 預覽 up 會做什么
docker compose up --dry-run

# 預覽 down 會刪除什么
docker compose down --dry-run

# 預覽構建過程
docker compose build --dry-run

輸出示例:

DRY-RUN MODE - No changes will be made
[+] Running 3/0
 ? Network myapp_default  Created
 ? Container myapp-db-1   Created
 ? Container myapp-api-1  Created

V1 對比: 無此功能,只能直接執(zhí)行。

3.7 多文件合并

場景: 基礎配置 + 環(huán)境差異配置。

project/
├── docker-compose.yml          # 基礎配置
├── docker-compose.override.yml # 本地開發(fā)覆蓋(自動加載)
├── docker-compose.prod.yml     # 生產(chǎn)環(huán)境
└── docker-compose.test.yml     # 測試環(huán)境

docker-compose.yml(基礎):

services:
  api:
    image: myapi:latest
    environment:
      - DB_HOST=db

docker-compose.override.yml(開發(fā),自動加載):

services:
  api:
    build: .
    volumes:
      - ./src:/app/src
    environment:
      - DEBUG=true

docker-compose.prod.yml(生產(chǎn)):

services:
  api:
    deploy:
      replicas: 3
      resources:
        limits:
          cpus: '0.5'
          memory: 512M
    environment:
      - DEBUG=false

使用方式:

# 開發(fā)環(huán)境(自動合并 override)
docker compose up

# 生產(chǎn)環(huán)境
docker compose -f docker-compose.yml -f docker-compose.prod.yml up

# 查看合并后的完整配置
docker compose -f docker-compose.yml -f docker-compose.prod.yml config

4. 命令對比速查

功能V1V2
啟動服務docker-compose updocker compose up
后臺啟動docker-compose up -ddocker compose up -d
等待就緒需腳本docker compose up --wait
熱重載需第三方docker compose watch
預覽變更docker compose up --dry-run
查看日志docker-compose logsdocker compose logs
進入容器docker-compose execdocker compose exec
停止服務docker-compose downdocker compose down
環(huán)境隔離多文件--profile
并行構建有限docker compose build --parallel

5. 遷移建議

5.1 命令別名(可選)

如果有舊腳本依賴 docker-compose 命令:

# 添加到 ~/.bashrc 或 ~/.zshrc
alias docker-compose='docker compose'

5.2 compose 文件兼容性

V2 完全兼容 V1 的 compose 文件格式,無需修改。

5.3 版本聲明

# 不再需要 version 字段(V2 會忽略)
# version: "3.8"  # 可刪除

services:
  web:
    image: nginx

6. 文檔信息

項目
創(chuàng)建時間2026-01-10
Docker Compose 版本v5.0.1
參考文檔https://docs.docker.com/compose/

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Docker命令行輸出格式化完全指南

    Docker命令行輸出格式化完全指南

    在Docker中大多數(shù)的輸出命令都支持--format 選項,用于控制輸出,下面這篇文章主要給大家介紹了關于Docker命令行輸出格式化的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • 詳解如何在 docker 容器中捕獲信號

    詳解如何在 docker 容器中捕獲信號

    本篇文章主要介紹了如何在 docker 容器中捕獲信號,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • docker安裝Elasticsearch7.6集群并設置密碼

    docker安裝Elasticsearch7.6集群并設置密碼

    這篇文章主要介紹了docker安裝Elasticsearch7.6集群并設置密碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Docker項目部署之從后端到前端部署詳細流程

    Docker項目部署之從后端到前端部署詳細流程

    在當今的軟件開發(fā)領域,容器化技術已經(jīng)成為了部署和管理應用程序的重要手段,下面這篇文章主要給大家介紹了關于Docker項目部署之從后端到前端部署的相關資料,需要的朋友可以參考下
    2024-08-08
  • docker 啟用多個端口映射命令的操作

    docker 啟用多個端口映射命令的操作

    這篇文章主要介紹了docker 啟用多個端口映射命令的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Docker開啟遠程訪問的實現(xiàn)方式

    Docker開啟遠程訪問的實現(xiàn)方式

    這篇文章主要介紹了Docker開啟遠程訪問的實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • docker容器化部署及使用方式

    docker容器化部署及使用方式

    這篇文章主要介紹了docker容器化部署及使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • Docker自定義網(wǎng)絡的實現(xiàn)步驟

    Docker自定義網(wǎng)絡的實現(xiàn)步驟

    本文詳細介紹了Docker網(wǎng)絡的基礎概念、自定義網(wǎng)絡的重要性及其類型bridge、overlay、macvlan等,具有一定的參考價值,感興趣的可以了解一下
    2026-04-04
  • docker容器在uos-12038.101上啟動報錯的解決辦法

    docker容器在uos-12038.101上啟動報錯的解決辦法

    這篇文章主要介紹了docker容器在uos-12038.101上啟動報錯的問題,解決方案是需要在/etc/systemd/system/或者 /usr/lib/systemd/system/
    找到docker.service文件,在ExecStart=/usr/bin/dockerd后面添加 --default-ulimit nofile=65536:65536參數(shù),需要的朋友可以參考下
    2024-03-03
  • docker網(wǎng)段沖突如何解決

    docker網(wǎng)段沖突如何解決

    這篇文章主要為大家介紹了docker網(wǎng)段沖突的解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪<BR>
    2023-05-05

最新評論

泸水县| 石河子市| 连山| 铁岭市| 柏乡县| 壤塘县| 潮安县| 城固县| 东至县| 景洪市| 永昌县| 伊宁县| 时尚| 宜黄县| 肇州县| 施甸县| 出国| 尖扎县| 新邵县| 齐齐哈尔市| 六枝特区| 青川县| 天柱县| 瑞安市| 江门市| 乌鲁木齐县| 诏安县| 平乡县| 龙门县| 德化县| 定州市| 衡东县| 浠水县| 湘西| 宁津县| 方正县| 陆川县| 新疆| 屏山县| 阿克| 霞浦县|