使用 docker-compose down
命令可以停止并删除由 docker-compose up
启动的容器、网络、卷和图像,具体行为取决于命令的参数。以下是 docker-compose down
的使用说明及注意事项:
一. 基本使用
docker-compose down
- 作用:停止正在运行的容器,并删除容器、默认网络和为服务创建的镜像(如果有)。
- 注意:默认不会删除数据卷,因此卷中保存的数据不会丢失。
二. 使用参数
docker-compose down
提供了一些参数,更加灵活地控制容器、网络、卷和镜像的处理方式。
2.1 删除数据卷
如果想同时删除与容器关联的 数据卷,可以加上 -v
参数:
docker-compose down -v
- 作用:不仅删除容器,还会删除与容器关联的匿名卷或未指定的命名卷。
- 注意:如果删除卷,数据将无法恢复。因此在生产环境中使用时要小心,避免意外丢失重要数据。
2.2 删除镜像
要删除为服务构建的镜像,可以使用 --rmi
参数:
docker-compose down --rmi all
--rmi all
:删除所有与服务关联的镜像(包括通过docker-compose.yml
文件中build
选项构建的镜像)。--rmi local
:仅删除本地构建的镜像,不会删除从镜像仓库拉取的镜像。
2.3 删除网络
如果使用自定义网络并希望删除它,可以在执行 docker-compose down
后,网络也会自动删除。但如果想保留网络,可以使用 docker network ls
查看并手动管理网络资源。
三. 使用场景与注意事项
-
开发环境:通常在开发环境中,使用
docker-compose down
来完全关闭并重置运行的容器和服务配置。建议不要删除卷,以保留容器中存储的数据。 -
生产环境:在生产环境中使用时要格外小心,尤其是删除数据卷时,可能会导致数据丢失。确保在生产环境下已经备份了所有重要数据。
-
卷的持久化:如需保留容器中的数据,建议使用命名卷。在
docker-compose.yml
中使用volumes
配置,确保卷中的数据可以在down
后保留。services: app: volumes: - my_app_data:/data volumes: my_app_data:
四. 与 docker-compose stop
的区别
docker-compose stop
:仅停止容器,但不删除容器、网络、卷或镜像。docker-compose down
:停止并删除容器、网络和可选的卷和镜像。
总结
docker-compose down
是用来完全停止和清理docker-compose
创建的环境的工具,通常用于开发、测试阶段。- 小心使用删除卷和镜像的选项,尤其在生产环境中,确保数据安全。