这两个命令是 Docker Compose 的核心操作指令,用于重启服务。以下是详细解释:
**1. docker-compose down
**
作用:停止并移除所有相关容器、网络
执行过程:
- 停止
docker-compose.yml
中定义的所有容器 - 删除这些容器(但不会删除数据卷)
- 移除为这些服务创建的默认网络
典型使用场景:
- 需要彻底重建服务时
- 修改了
docker-compose.yml
配置后 - 解决容器状态异常问题
**2. docker-compose up -d
**
作用:重新创建并启动所有服务(后台模式)
参数说明:
-d
或--detach
:让容器在后台运行
执行过程:
- 如果容器不存在:基于镜像创建新容器
- 如果容器已存在:重用现有容器(但会应用新配置)
- 创建所需的网络和卷
- 启动所有服务
3. 组合使用场景
场景 | 效果 |
---|---|
修改了 docker-compose.yml | 使新配置生效 |
更新镜像版本后 | 加载新镜像 |
服务出现异常 | 完全重启 |
4. 数据安全性说明
- 数据卷不会删除:除非添加
-v
参数(如docker-compose down -v
) - 数据库服务警告:对 MySQL/PostgreSQL 等数据库服务慎用,可能需特殊处理
5. 完整生命周期示例
# 首次启动
docker-compose up -d
# 修改配置后
nano docker-compose.yml
docker-compose down && docker-compose up -d
# 彻底清理(含数据卷)
docker-compose down -v
6. 与单命令对比
命令 | 等效单命令 | 区别 |
---|---|---|
docker-compose down | docker stop X && docker rm X | 批量操作所有服务 |
docker-compose up -d | docker run -d ... | 自动处理依赖关系 |
7. 常见问题
Q:为什么不能直接用 restart
?
A:docker-compose restart
只是重启容器,不会加载 docker-compose.yml
的新修改。
Q:执行后如何验证?
docker-compose ps # 查看所有服务状态
docker-compose logs -f # 跟踪日志
通过这两个命令的组合,您可以安全地重建 Docker Compose 定义的所有服务,适用于大多数配置变更场景。