跳到主要内容

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 #启动

image-20231104110246589

image-20231104061312821

案例:查看启动的容器

$ 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 启动的服务。这个命令会执行以下操作:

  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 命令,这将停止容器但不会删除它们。

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

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 文件的内容,你可以按照以下步骤进行:

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

    nano docker-compose.yml

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

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

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

    yamlservices:
    my_service:
    image: my_image
    environment:
    - MY_VARIABLE=value

    然后修改 MY_VARIABLE 的值。

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

  4. 重启 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 downdocker-compose stop,具体取决于你希望达到的效果。

  1. 使用 docker-compose down

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

image-20230107215114763

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

image-20230107215126971

🍀 个人博客站点

http://onedayxyy.cn/

image-20231021104335916

image-20231021104405837

🍀 语雀

https://www.yuque.com/xyy-onlyone

image-20231030124453217

🍀 csdn

https://blog.csdn.net/weixin_39246554?spm=1010.2135.3001.5421

image-20230107215149885

🍀 知乎

https://www.zhihu.com/people/foryouone

image-20230107215203185

最后

好了,关于本次就到这里了,感谢大家阅读,最后祝大家生活快乐,每天都过的有意义哦,我们下期见!

image-20231016062113861