2、docker-compose
docker-compose
目录
[toc]
简介
命令
案例:查看版本
[root@hg-ecs2 ~]# docker-compose version
Docker Compose version v2.23.0
或者
[root@hg-ecs2 ~]# docker-compose --version
Docker Compose version v2.23.0
案例:启动
方法1:
docker-compose up -d #启动
方法2:(加上--build选项)
##或者:
##build Build or rebuild services
docker-compose up --build -d #启动
- 案例
docker-compose up --build -d #启动
案例:查看启动的容器
$ docker-compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
front-proxy-front-envoy-1 front-proxy-front-envoy "/docker-entrypoint.sh /usr/local/bin/envoy -c /etc/envoy.yaml" front-envoy About a minute ago Up 35 seconds 0.0.0.0:8001->8001/tcp, :::8001->8001/tcp, 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp, 0.0.0.0:8443->8443/tcp, :::8443->8443/tcp, 10000/tcp
front-proxy-service-envoy-1-1 front-proxy-service-envoy-1 "/docker-entrypoint.sh /usr/local/bin/envoy -c /etc/envoy.yaml" service-envoy-1 About a minute ago Up 37 seconds (healthy) 10000/tcp
front-proxy-service-envoy-2-1 front-proxy-service-envoy-2 "/docker-entrypoint.sh /usr/local/bin/envoy -c /etc/envoy.yaml" service-envoy-2 About a minute ago Up 37 seconds (healthy) 10000/tcp
front-proxy-service1-1 front-proxy-service1 "python3 /code/service.py" service1 About a minute ago Up 38 seconds (healthy)
front-proxy-service2-1 front-proxy-service2 "python3 /code/service.py" service2 About a minute ago Up 38 seconds (healthy)
案例:删除启动的容器
docker-compose down
down Stop and remove containers, networks
⚠️ 特别注意:
2023年12月11日查询:
docker-compose down 是删除容器呢,还是停止重启呢,会丢失数据吗?
docker-compose down
命令的作用是停止并删除通过 docker-compose up
启动的服务。这个命令会执行以下操作:
- 停止容器: 所有由
docker-compose up
启动的容器都将被停止。 - 删除容器: 所有相关的容器实例将被删除。这包括停止的容器和任何由
docker-compose.yml
文件定义的服务。 - 删除网络: 如果为服务定义了自定义网络,该网络也将被删除。
- 删除卷: 如果使用了卷(volumes),它们也将被删除,除非使用了外部的卷。
当你运行 docker-compose down
时,==确实会停止并删除容器,但关于数据的丢失取决于你的容器配置和使用的卷。==
- 数据丢失的情况:
- 如果容器使用了匿名卷(anonymous volumes),这些卷的数据将会被删除。
- 如果使用了通过
docker-compose.yml
文件定义的卷,但没有指定外部卷,那么这些卷的数据也会被删除。
- 数据不丢失的情况:
- 如果容器使用了外部卷(external volumes),这些卷的数据将保留,不会被删除。外部卷是通过
docker volume create
命令创建的,而不是在docker-compose.yml
文件中定义的。 -
==如果使用了本地路径作为卷,并且这个卷被挂载到容器内部,数据通常也不会丢失==。这是因为
docker-compose down
默认情况下不会删除本地路径的数据。
- 如果容器使用了外部卷(external volumes),这些卷的数据将保留,不会被删除。外部卷是通过
在使用 docker-compose down
之前,务必了解你的容器配置和卷的使用情况,以确保你不会意外丢失重要的数据。如果想要保留数据但停止容器,可以使用 docker-compose stop
命令,这将停止容器但不会删除它们。
案例:查看某个服务的日志
docker-compose logs service1
案例:更新docker-compose.yml里的内容
亲测有效!
结论:(使用如下方法)
1、更新docker-compose.yml
2、
docker-compose down
docker-compose up -d
如何更新docker-compose.yml里的内容?
要更新 docker-compose.yml
文件的内容,你可以按照以下步骤进行:
-
打开
docker-compose.yml
文件: 使用文本编辑器(比如nano
、vim
、notepad
等),打开docker-compose.yml
文件。这个文件通常位于你的项目目录下。nano docker-compose.yml
替换
nano
为你喜欢使用的编辑器。 -
对文件进行修改: 在编辑器中,找到并修改你想要更新的内容。这可能包括容器的配置、环境变量、端口映射等。
例如,如果你想要修改一个服务的环境变量,你可以找到类似下面的部分:
yamlservices:
my_service:
image: my_image
environment:
- MY_VARIABLE=value然后修改
MY_VARIABLE
的值。 -
保存文件: 保存对
docker-compose.yml
文件的修改。在大多数编辑器中,你可以使用快捷键(比如Ctrl + O
)保存文件,然后退出编辑器。 -
重启 Docker 容器: 一旦你对
docker-compose.yml
文件进行了修改,你需要重新启动相应的 Docker 容器,以应用这些更改。在项目目录中,运行以下命令:docker-compose down
docker-compose up -d上述命令会停止并删除当前运行的容器,然后重新启动它们,以便应用新的配置。
请注意,如果你的更新涉及到镜像的更改,Docker 将下载新的镜像。如果更新涉及到容器的网络配置或端口映射,确保相关的端口未被占用。
在进行任何修改之前,建议备份 docker-compose.yml
文件,以防止意外的数据丢失。
再提问:
如何更新docker-compose.yml里的内容?是需要使用docker-compose down命令呢,还是使用docker-compose stop命令呢?
更新 docker-compose.yml
文件后,你可以选择使用 docker-compose down
或 docker-compose stop
,具体取决于你希望达到的效果。
-
使用
docker-compose down
:- 效果: 这个命令会停止并删除通过
docker-compose up
启动的所有服务,包括相关的容器、网络和卷(除非使用了外部卷)。 - 数据影响: 如果容器使用了匿名卷或通过
docker-compose.yml
定义的卷 (未指定为外部卷),相关数据会被删除。 - 重新启动: 重新运行
docker-compose up -d
可以重新启动服务,并使用更新后的docker-compose.yml
文件。
docker-compose down
docker-compose up -d - 效果: 这个命令会停止并删除通过
-
使用
docker-compose stop
:- 效果: 这个命令会停止通过
docker-compose up
启动的所有服务,但不会删除容器、网络或卷。 - 数据影响: 数据不会被删除,因为容器和相关资源仍然存在。
- 重新启动: 重新运行
docker-compose up -d
可以重新启动服务,并使用更新后的docker-compose.yml
文件。
bashdocker-compose stop
docker-compose up -d - 效果: 这个命令会停止通过
选择使用 docker-compose down
还是 docker-compose stop
取决于你的需求:
- 如果你希望完全停止并删除所有相关资源,并且不需要保存容器的数据,可以使用
docker-compose down
。 - 如果你只是想停止容器,但保留相关资源和数据,可以使用
docker-compose stop
。
在执行这些命令之前,请确保你了解容器的配置和使用的卷类型,以便不会意外删除重要的数据。如果使用了外部卷或本地路径作为卷,数据通常是安全的,无论你选择哪个命令。
额额,那建议还是使用
docker-compose stop
吧,但是只要自己的持久化数据做的符合要求,两者的效果都是一样的。最后自己选择使用
docker-compose down
,比较方便!
关于我
我的博客主旨:
- 排版美观,语言精炼;
- 文档即手册,步骤明细,拒绝埋坑,提供源码;
- 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!
🍀 微信二维码 x2675263825 (舍得), qq:2675263825。
🍀 微信公众号 《云原生架构师实战》
🍀 个人博客站点
🍀 语雀
https://www.yuque.com/xyy-onlyone
🍀 csdn
https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421
🍀 知乎
https://www.zhihu.com/people/foryouone
最后
好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!