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

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

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

1. 概述

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

2. 性能對(duì)比

2.1 啟動(dòng)速度

場(chǎng)景V1V2提升
命令冷啟動(dòng)~1.5s~0.3s5x
啟動(dòng) 10 個(gè)服務(wù)~8s~2s4x
構(gòu)建鏡像串行為主并行 + BuildKit2-3x

原因: V1 依賴 Python 解釋器啟動(dòng),V2 是 Go 編譯的原生二進(jìn)制。

2.2 資源占用

V1: docker-compose up
  └── Python 進(jìn)程 ~50-80MB 內(nèi)存

V2: docker compose up
  └── Go 二進(jìn)制 ~15-25MB 內(nèi)存

3. 新功能詳解與案例

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

場(chǎng)景: 前端/后端開發(fā)時(shí),修改代碼自動(dòng)重建容器。

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

        # 修改 package.json -> 重新構(gòu)建鏡像
        - path: ./package.json
          action: rebuild

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

使用:

docker compose watch

效果:

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

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

3.2 --wait 等待服務(wù)就緒

場(chǎng)景: CI/CD 流程中,確保服務(wù)完全啟動(dòng)后再執(zhí)行測(cè)試。

# 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 方式(簡(jiǎn)潔):

docker compose up -d --wait
# 命令會(huì)阻塞,直到所有服務(wù)健康檢查通過(guò)
npm test

3.3 Profiles 環(huán)境隔離

場(chǎng)景: 同一個(gè) compose 文件,區(qū)分開發(fā)/測(cè)試/調(diào)試環(huán)境。

# docker-compose.yml
services:
  # 核心服務(wù) - 始終啟動(dòng)
  web:
    image: nginx
    ports:
      - "80:80"

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

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

  # 調(diào)試工具 - 僅調(diào)試時(shí)啟動(dòng)
  pgadmin:
    image: dpage/pgadmin4
    ports:
      - "5050:80"
    profiles: ["debug"]

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

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

  # 測(cè)試服務(wù) - 僅測(cè)試時(shí)啟動(dòng)
  test-runner:
    build: ./tests
    profiles: ["test"]

volumes:
  db_data:

使用方式:

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

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

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

# 運(yùn)行測(cè)試
docker compose --profile test up -d
# 啟動(dòng): web, api, db, test-runner

# 組合多個(gè) profile
docker compose --profile debug --profile monitoring up -d
# 啟動(dòng): web, api, db, pgadmin, prometheus, grafana

V1 對(duì)比: 需要維護(hù)多個(gè) compose 文件(docker-compose.yml, docker-compose.debug.yml 等)。

3.4 更好的依賴控制

場(chǎng)景: API 服務(wù)必須等數(shù)據(jù)庫(kù)和 Redis 都就緒才能啟動(dòng)。

# 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 健康檢查通過(guò)
        restart: true                 # db 重啟時(shí) api 也重啟
      redis:
        condition: service_healthy
    ports:
      - "8080:8080"

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

依賴條件:

condition說(shuō)明
service_started容器啟動(dòng)即滿足(默認(rèn))
service_healthy健康檢查通過(guò)才滿足
service_completed_successfully容器成功退出(exit 0)

V1 對(duì)比: 只支持 service_started,無(wú)法等待健康檢查。

3.5 并行構(gòu)建與 BuildKit

場(chǎng)景: 多服務(wù)項(xiàng)目,加速鏡像構(gòu)建。

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

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

  worker:
    build: ./worker

V2 構(gòu)建優(yōu)勢(shì):

# 并行構(gòu)建所有服務(wù)
docker compose build --parallel

# 顯示構(gòu)建進(jìn)度
docker compose build --progress=plain

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

# 只構(gòu)建指定服務(wù)
docker compose build frontend backend

BuildKit 特性(V2 默認(rèn)啟用):

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

3.6 Dry Run 模式

場(chǎng)景: 執(zhí)行命令前預(yù)覽會(huì)發(fā)生什么。

# 預(yù)覽 up 會(huì)做什么
docker compose up --dry-run

# 預(yù)覽 down 會(huì)刪除什么
docker compose down --dry-run

# 預(yù)覽構(gòu)建過(guò)程
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 對(duì)比: 無(wú)此功能,只能直接執(zhí)行。

3.7 多文件合并

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

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

docker-compose.yml(基礎(chǔ)):

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

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

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)境(自動(dòng)合并 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. 命令對(duì)比速查

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

5. 遷移建議

5.1 命令別名(可選)

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

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

5.2 compose 文件兼容性

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

5.3 版本聲明

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

services:
  web:
    image: nginx

6. 文檔信息

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

總結(jié)

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

相關(guān)文章

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

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

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

    詳解如何在 docker 容器中捕獲信號(hào)

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

    docker安裝Elasticsearch7.6集群并設(shè)置密碼

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

    Docker項(xiàng)目部署之從后端到前端部署詳細(xì)流程

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

    docker 啟用多個(gè)端口映射命令的操作

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

    Docker開啟遠(yuǎn)程訪問(wèn)的實(shí)現(xiàn)方式

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

    docker容器化部署及使用方式

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

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

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

    docker容器在uos-12038.101上啟動(dòng)報(bào)錯(cuò)的解決辦法

    這篇文章主要介紹了docker容器在uos-12038.101上啟動(dòng)報(bào)錯(cuò)的問(wèn)題,解決方案是需要在/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)段沖突的解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>
    2023-05-05

最新評(píng)論

鹤庆县| 五原县| 松江区| 新河县| 香港| 绍兴县| 虎林市| 蕉岭县| 依兰县| 东兰县| 阿拉善盟| 习水县| 怀宁县| 永宁县| 隆安县| 应用必备| 崇信县| 台南县| 仪征市| 潜江市| 九江县| 通化市| 万荣县| 太白县| 民勤县| 武城县| 永吉县| 南投市| 龙胜| 赫章县| 桂东县| 明溪县| 夏河县| 临沧市| 新建县| 安龙县| 阜城县| 高密市| 襄汾县| 锦州市| 枣阳市|