Skip to content

2、docker-compose

docker-compose

目录

[toc]

简介

命令

案例:查看版本

bash
[root@hg-ecs2 ~]# docker-compose versionDockerComposeversionv2.23.0或者[root@hg-ecs2 ~]# docker-compose --versionDockerComposeversionv2.23.0

案例:启动

bash
方法1:docker-composeup-d#启动方法2:(加上--build选项)##或者:##build Build or rebuild servicesdocker-composeup--build-d#启动
  • 案例
bash
docker-composeup--build-d#启动

image-20231104110246589

image-20231104061312821

案例:查看启动的容器

bash
$docker-composepsNAMEIMAGECOMMANDSERVICECREATEDSTATUSPORTSfront-proxy-front-envoy-1front-proxy-front-envoy"/docker-entrypoint.sh /usr/local/bin/envoy -c /etc/envoy.yaml"front-envoyAboutaminuteagoUp35seconds0.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/tcpfront-proxy-service-envoy-1-1front-proxy-service-envoy-1"/docker-entrypoint.sh /usr/local/bin/envoy -c /etc/envoy.yaml"service-envoy-1AboutaminuteagoUp37seconds(healthy) 10000/tcpfront-proxy-service-envoy-2-1front-proxy-service-envoy-2"/docker-entrypoint.sh /usr/local/bin/envoy -c /etc/envoy.yaml"service-envoy-2AboutaminuteagoUp37seconds(healthy) 10000/tcpfront-proxy-service1-1front-proxy-service1"python3 /code/service.py"service1AboutaminuteagoUp38seconds(healthy)front-proxy-service2-1front-proxy-service2"python3 /code/service.py"service2AboutaminuteagoUp38seconds(healthy)

案例:删除启动的容器

bash
docker-composedowndownStopandremovecontainers,networks

⚠️ 特别注意:

2023年12月11日查询:

docker-compose down 是删除容器呢,还是停止重启呢,会丢失数据吗?

docker-compose down命令的作用是停止并删除通过 docker-compose up启动的服务。这个命令会执行以下操作:

  1. 停止容器:所有由 docker-compose up启动的容器都将被停止。
  2. 删除容器:所有相关的容器实例将被删除。这包括停止的容器和任何由 docker-compose.yml文件定义的服务。
  3. 删除网络:如果为服务定义了自定义网络,该网络也将被删除。
  4. 删除卷:如果使用了卷(volumes),它们也将被删除,除非使用了外部的卷。

当你运行 docker-compose down时,==确实会停止并删除容器,但关于数据的丢失取决于你的容器配置和使用的卷。==

  • 数据丢失的情况:
    • 如果容器使用了匿名卷(anonymous volumes),这些卷的数据将会被删除。
    • 如果使用了通过 docker-compose.yml文件定义的卷,但没有指定外部卷,那么这些卷的数据也会被删除。
  • 数据不丢失的情况:
    • 如果容器使用了外部卷(external volumes),这些卷的数据将保留,不会被删除。外部卷是通过 docker volume create命令创建的,而不是在 docker-compose.yml文件中定义的。
    • ==如果使用了本地路径作为卷,并且这个卷被挂载到容器内部,数据通常也不会丢失==。这是因为 docker-compose down默认情况下不会删除本地路径的数据。

在使用 docker-compose down之前,务必了解你的容器配置和卷的使用情况,以确保你不会意外丢失重要的数据。如果想要保留数据但停止容器,可以使用 docker-compose stop命令,这将停止容器但不会删除它们。

案例:查看某个服务的日志

bash
docker-composelogsservice1

案例:更新docker-compose.yml里的内容

亲测有效!

结论:(使用如下方法)

bash
1、更新docker-compose.yml2、docker-composedowndocker-composeup-d

如何更新docker-compose.yml里的内容?

要更新 docker-compose.yml文件的内容,你可以按照以下步骤进行:

  1. 打开 docker-compose.yml文件:使用文本编辑器(比如 nanovimnotepad等),打开 docker-compose.yml文件。这个文件通常位于你的项目目录下。

    nano docker-compose.yml

    替换 nano为你喜欢使用的编辑器。

  2. 对文件进行修改:在编辑器中,找到并修改你想要更新的内容。这可能包括容器的配置、环境变量、端口映射等。

    例如,如果你想要修改一个服务的环境变量,你可以找到类似下面的部分:

    yaml
    yamlservices:my_service:image:my_imageenvironment:- MY_VARIABLE=value

    然后修改 MY_VARIABLE的值。

  3. 保存文件:保存对 docker-compose.yml文件的修改。在大多数编辑器中,你可以使用快捷键(比如 Ctrl + O)保存文件,然后退出编辑器。

  4. 重启 Docker 容器:一旦你对 docker-compose.yml文件进行了修改,你需要重新启动相应的 Docker 容器,以应用这些更改。在项目目录中,运行以下命令:

    bash
    docker-composedowndocker-composeup-d

    上述命令会停止并删除当前运行的容器,然后重新启动它们,以便应用新的配置。

请注意,如果你的更新涉及到镜像的更改,Docker 将下载新的镜像。如果更新涉及到容器的网络配置或端口映射,确保相关的端口未被占用。

在进行任何修改之前,建议备份 docker-compose.yml文件,以防止意外的数据丢失。


再提问:

如何更新docker-compose.yml里的内容?是需要使用docker-compose down命令呢,还是使用docker-compose stop命令呢?

更新 docker-compose.yml文件后,你可以选择使用 docker-compose downdocker-compose stop,具体取决于你希望达到的效果。

  1. 使用 docker-compose down

    • 效果:这个命令会停止并删除通过 docker-compose up启动的所有服务,包括相关的容器、网络和卷(除非使用了外部卷)。
    • 数据影响:如果容器使用了匿名卷或通过 docker-compose.yml定义的卷(未指定为外部卷),相关数据会被删除。
    • 重新启动:重新运行 docker-compose up -d可以重新启动服务,并使用更新后的 docker-compose.yml文件。
    docker-compose downdocker-compose up -d
  2. 使用 docker-compose stop

    • 效果:这个命令会停止通过 docker-compose up启动的所有服务,但不会删除容器、网络或卷。
    • 数据影响:数据不会被删除,因为容器和相关资源仍然存在。
    • 重新启动:重新运行 docker-compose up -d可以重新启动服务,并使用更新后的 docker-compose.yml文件。
    bashdocker-compose stopdocker-compose up -d

选择使用 docker-compose down还是 docker-compose stop取决于你的需求:

  • 如果你希望完全停止并删除所有相关资源,并且不需要保存容器的数据,可以使用 docker-compose down
  • 如果你只是想停止容器,但保留相关资源和数据,可以使用 docker-compose stop

在执行这些命令之前,请确保你了解容器的配置和使用的卷类型,以便不会意外删除重要的数据。如果使用了外部卷或本地路径作为卷,数据通常是安全的,无论你选择哪个命令。

额额,那建议还是使用docker-compose stop吧,但是只要自己的持久化数据做的符合要求,两者的效果都是一样的。

最后自己选择使用docker-compose down,比较方便!

关于我

我的博客主旨:

  • 排版美观,语言精炼;
  • 文档即手册,步骤明细,拒绝埋坑,提供源码;
  • 本人实战文档都是亲测成功的,各位小伙伴在实际操作过程中如有什么疑问,可随时联系本人帮您解决问题,让我们一起进步!

🍀 微信二维码 x2675263825 (舍得), qq:2675263825。

image-20230107215114763

🍀 微信公众号 《云原生架构师实战》

image-20230107215126971

🍀 个人博客站点

http:

版权:此文章版权归 One 所有,如有转载,请注明出处!

链接:可点击右上角分享此页面复制文章链接

上次更新时间:

最近更新