docker compose 命令

项目结构说明

复制代码
你的项目/
├── docker/
│   └── docker-compose.yml    # Compose配置文件
├── src/
├── pyproject.toml
└── Dockerfile

1. 启动和管理服务

启动服务

bash 复制代码
# 启动所有服务(前台运行)
docker-compose -f docker/docker-compose.yml up

# 后台启动所有服务
docker-compose -f docker/docker-compose.yml up -d

# 启动并强制重新构建镜像
docker-compose -f docker/docker-compose.yml up -d --build

# 启动指定服务
docker-compose -f docker/docker-compose.yml up -d service_name

# 启动多个服务
docker-compose -f docker/docker-compose.yml up -d web db

停止服务

bash 复制代码
# 停止所有服务(容器停止但保留)
docker-compose -f docker/docker-compose.yml stop

# 停止指定服务
docker-compose -f docker/docker-compose.yml stop service_name

# 停止并删除所有容器
docker-compose -f docker/docker-compose.yml down

# 停止并删除容器、网络、卷
docker-compose -f docker/docker-compose.yml down -v

# 停止并删除容器、网络,同时删除镜像
docker-compose -f docker/docker-compose.yml down --rmi all

重启服务

bash 复制代码
# 重启所有服务
docker-compose -f docker/docker-compose.yml restart

# 重启指定服务
docker-compose -f docker/docker-compose.yml restart service_name

2. 查看状态和日志

查看服务状态

bash 复制代码
# 查看所有服务状态
docker-compose -f docker/docker-compose.yml ps

# 查看指定服务状态
docker-compose -f docker/docker-compose.yml ps service_name

# 查看所有服务(包括已停止的)
docker-compose -f docker/docker-compose.yml ps -a

# 查看服务容器ID
docker-compose -f docker/docker-compose.yml ps -q

查看日志

bash 复制代码
# 查看所有服务的日志
docker-compose -f docker/docker-compose.yml logs

# 查看指定服务的日志
docker-compose -f docker/docker-compose.yml logs service_name

# 实时跟踪日志
docker-compose -f docker/docker-compose.yml logs -f

# 查看最后100行日志
docker-compose -f docker/docker-compose.yml logs --tail 100

# 查看带时间戳的日志
docker-compose -f docker/docker-compose.yml logs -t

# 查看并过滤错误日志
docker-compose -f docker/docker-compose.yml logs | grep ERROR

3. 构建和更新

构建镜像

bash 复制代码
# 构建所有服务的镜像
docker-compose -f docker/docker-compose.yml build

# 构建指定服务的镜像
docker-compose -f docker/docker-compose.yml build service_name

# 构建时不使用缓存
docker-compose -f docker/docker-compose.yml build --no-cache

# 构建并拉取最新基础镜像
docker-compose -f docker/docker-compose.yml build --pull

拉取和更新

bash 复制代码
# 拉取所有服务的镜像
docker-compose -f docker/docker-compose.yml pull

# 拉取指定服务的镜像
docker-compose -f docker/docker-compose.yml pull service_name

# 拉取并重新启动
docker-compose -f docker/docker-compose.yml pull && docker-compose -f docker/docker-compose.yml up -d

4. 进入容器执行命令

bash 复制代码
# 进入容器(交互式shell)
docker-compose -f docker/docker-compose.yml exec service_name /bin/bash

# 如果容器没有bash,使用sh
docker-compose -f docker/docker-compose.yml exec service_name /bin/sh

# 以root用户进入
docker-compose -f docker/docker-compose.yml exec -u root service_name /bin/bash

# 在容器内执行单条命令
docker-compose -f docker/docker-compose.yml exec service_name ls -la

# 设置环境变量执行命令
docker-compose -f docker/docker-compose.yml exec -e ENV=production service_name python app.py

5. 管理容器生命周期

暂停/恢复

bash 复制代码
# 暂停所有服务
docker-compose -f docker/docker-compose.yml pause

# 暂停指定服务
docker-compose -f docker/docker-compose.yml pause service_name

# 恢复所有暂停的服务
docker-compose -f docker/docker-compose.yml unpause

# 恢复指定暂停的服务
docker-compose -f docker/docker-compose.yml unpause service_name

删除

bash 复制代码
# 删除已停止的容器
docker-compose -f docker/docker-compose.yml rm

# 强制删除(不提示确认)
docker-compose -f docker/docker-compose.yml rm -f

# 删除指定服务
docker-compose -f docker/docker-compose.yml rm service_name

6. 扩展和伸缩

bash 复制代码
# 扩展服务实例数量(例如扩展到3个)
docker-compose -f docker/docker-compose.yml up -d --scale service_name=3

# 查看服务实例数量
docker-compose -f docker/docker-compose.yml ps service_name

7. 配置和验证

bash 复制代码
# 验证docker-compose.yml文件格式
docker-compose -f docker/docker-compose.yml config

# 验证并查看合并后的配置
docker-compose -f docker/docker-compose.yml config --resolve-image-digests

# 查看服务列表
docker-compose -f docker/docker-compose.yml config --services

8. 网络和卷管理

bash 复制代码
# 查看服务使用的网络
docker-compose -f docker/docker-compose.yml network ls

# 查看服务使用的卷
docker-compose -f docker/docker-compose.yml volume ls

# 清理孤立的容器
docker-compose -f docker/docker-compose.yml down --remove-orphans

9. 针对你的项目常用场景

开发环境(代码变更频繁)

bash 复制代码
# 第一次启动
docker-compose -f docker/docker-compose.yml up -d --build

# 代码修改后重新构建并启动(最常用)
docker-compose -f docker/docker-compose.yml up -d --build

# 查看日志
docker-compose -f docker/docker-compose.yml logs -f

# 进入应用容器
docker-compose -f docker/docker-compose.yml exec app /bin/bash

# 停止并清理
docker-compose -f docker/docker-compose.yml down

生产环境(稳定运行)

bash 复制代码
# 启动
docker-compose -f docker/docker-compose.yml up -d

# 查看状态
docker-compose -f docker/docker-compose.yml ps

# 查看资源使用
docker-compose -f docker/docker-compose.yml top

# 重启服务
docker-compose -f docker/docker-compose.yml restart app

# 更新镜像并重启(滚动更新)
docker-compose -f docker/docker-compose.yml pull app
docker-compose -f docker/docker-compose.yml up -d app

10. 常用组合命令(简化版)

创建一个脚本或别名来简化命令:

bash 复制代码
# 添加到 ~/.bashrc 或 ~/.zshrc
alias dcup='docker-compose -f docker/docker-compose.yml up -d'
alias dcdown='docker-compose -f docker/docker-compose.yml down'
alias dclogs='docker-compose -f docker/docker-compose.yml logs -f'
alias dcps='docker-compose -f docker/docker-compose.yml ps'
alias dcexec='docker-compose -f docker/docker-compose.yml exec'
alias dcrestart='docker-compose -f docker/docker-compose.yml restart'
alias dcbuild='docker-compose -f docker/docker-compose.yml build'
alias dcstop='docker-compose -f docker/docker-compose.yml stop'

使用别名后:

bash 复制代码
# 启动
dcup --build

# 查看日志
dclogs app

# 进入容器
dcexec app /bin/bash

# 停止并删除
dcdown -v

11. 调试技巧

bash 复制代码
# 查看容器详细信息
docker-compose -f docker/docker-compose.yml ps -q | xargs docker inspect

# 查看某个容器的环境变量
docker-compose -f docker/docker-compose.yml exec app env

# 在容器内安装工具(临时调试)
docker-compose -f docker/docker-compose.yml exec -u root app apt-get update && apt-get install -y vim

# 查看容器文件系统变化
docker-compose -f docker/docker-compose.yml diff service_name
相关推荐
GlueNa2SiO33 小时前
01-Docker入门与核心概念
笔记·docker·容器
酷可达拉斯3 小时前
自动化运维-从零开始编写ansible剧本(二)
linux·运维·服务器·centos·自动化
A-刘晨阳3 小时前
Kubernetes 非共享存储详解:emptyDir 与 hostPath 从入门到实践
运维·云原生·容器·kubernetes·hostpath·emptydir
Nomarsgo3 小时前
联控 Lionconit PTC-1006手持工业平板电脑在野外输电线路巡检中的应用方案
运维·科技·自动化·汽车·电脑
瀚高PG实验室4 小时前
几种因网络波动导致应用与数据库操作异常的现象
运维·网络·数据库·postgresql·瀚高数据库
风曦Kisaki4 小时前
# Kubernetes(K8s)笔记Day15:K8s网络工作原理【Pod 网络模型,CNI 网络插件,Calico 工作模式详解,BGP协议,路由反射器】
运维·网络·nginx·云原生·容器·kubernetes
allforgood4 小时前
管理 SELinux 安全性
linux·运维·网络
Ramboooooooo4 小时前
SkyWalking-10.4.0 Docker + Nacos + Elasticsearch 生产级部署手册
elasticsearch·docker·skywalking
飞飞传输4 小时前
海关行业FTP传输服务器评测:传统FTP与现代化替代方案对比
大数据·运维·安全