青岛市文章资讯

docker compose管理docker服务的方法

2026-04-10 08:52:02 浏览次数:0
详细信息

Docker Compose 是管理多容器 Docker 应用的标准工具。以下是主要使用方法:

一、基本命令

1. 启动服务

# 启动所有服务(在后台运行)
docker-compose up -d

# 启动指定服务
docker-compose up -d service_name

2. 停止服务

# 停止所有服务
docker-compose down

# 停止并删除卷(数据)
docker-compose down -v

3. 查看服务状态

# 查看运行中的服务
docker-compose ps

# 查看所有服务(包括停止的)
docker-compose ps -a

# 查看服务日志
docker-compose logs
docker-compose logs -f  # 实时查看
docker-compose logs service_name  # 查看特定服务

4. 管理服务生命周期

# 启动已停止的服务
docker-compose start

# 停止服务(不删除容器)
docker-compose stop

# 重启服务
docker-compose restart

# 暂停服务
docker-compose pause

# 恢复服务
docker-compose unpause

二、配置管理

1. 基础 docker-compose.yml

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    environment:
      - NGINX_PORT=80
    depends_on:
      - db

  db:
    image: postgres:13
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - db_data:/var/lib/postgresql/data

volumes:
  db_data:

2. 环境变量管理

# 使用 .env 文件
# .env 文件内容:
DB_PASSWORD=mysecret

# docker-compose.yml 中引用:
db:
  image: postgres
  environment:
    POSTGRES_PASSWORD: ${DB_PASSWORD}

三、进阶使用

1. 构建和部署

# 构建镜像(如果使用 build)
docker-compose build

# 重新构建(强制)
docker-compose build --no-cache

# 拉取最新镜像
docker-compose pull

# 执行命令
docker-compose exec service_name command
# 示例:进入容器
docker-compose exec web bash

2. 配置文件管理

# 使用多个配置文件
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d

# 指定项目名称(避免命名冲突)
docker-compose -p myproject up -d

3. 查看配置

# 验证配置文件语法
docker-compose config

# 查看服务端口映射
docker-compose port web 80

四、常用场景示例

1. Web 应用栈(Nginx + PHP + MySQL)

version: '3.8'
services:
  nginx:
    image: nginx:alpine
    ports:
      - "8080:80"
    volumes:
      - ./html:/var/www/html
      - ./nginx.conf:/etc/nginx/nginx.conf
    depends_on:
      - php

  php:
    build: ./php
    volumes:
      - ./html:/var/www/html

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: rootpass
      MYSQL_DATABASE: appdb
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"

volumes:
  mysql_data:

2. 开发环境热重载

services:
  app:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app  # 代码挂载,实现热重载
    environment:
      - NODE_ENV=development
    command: npm run dev

五、最佳实践

版本控制:将 docker-compose.ymlDockerfile 加入版本控制 环境分离:使用不同的 compose 文件用于开发/测试/生产 数据持久化:使用命名卷(named volumes)管理数据 网络隔离:创建自定义网络增强安全性 资源限制:设置 CPU 和内存限制 健康检查:配置健康检查确保服务可用性

六、调试技巧

# 查看服务依赖图
docker-compose config --services

# 查看服务配置
docker-compose config --services | xargs -I {} sh -c 'echo "=== {} ===" && docker-compose config --services={}'

# 执行一次性命令(不启动服务)
docker-compose run --rm service_name command

# 清理无用资源
docker-compose down --rmi all  # 删除镜像
docker-compose down --remove-orphans  # 删除孤立的容器

七、Docker Compose v2 与 v1

从 Docker Desktop 开始,Compose 已集成到 Docker CLI 中:

# v1(传统)
docker-compose up

# v2(新版本)
docker compose up  # 注意没有短横线

选择哪个版本取决于你的 Docker 安装方式,两者命令功能基本相同。

相关推荐