Docker 问题集锦(25) - 关于 docker-compose stop 和 docker-compose start 的误解

当在Docker中更新镜像并尝试使用docker-compose stop和start命令时,发现容器未使用新镜像。解决这个问题涉及检查新镜像的可执行程序、容器依赖的镜像版本、更新命令的正确性。docker-compose restart命令实际上等同于stop加start,能确保配置变更生效。若修改了docker-compose.yml以外的配置文件,需使用docker-compose down和up -d来更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

问题

解决

步骤一、确认新镜像中可执行程序是否正确

步骤二、 查看当前容器依赖的镜像版本是否正确

步骤三、验证更新命令是否正确

步骤四、使用正确的更新命令

参考链接


《Docker 问题集锦》系列-总览_liuzhen007的专栏-CSDN博客前言欢迎大家订阅Data-Mining 的《Docker 问题集锦》专栏。这里简单的罗列一下专栏的文章目录,一方面是为了方便大家阅读,另一方面为了让大家对专栏有一个整体的认识。专栏中的大多数内容都是根据自己在实际开发过程中遇到的问题,进而总结的一些知识分享,可能某些文章并没有就内容完全展开讨论,敬请谅解,如果有问题欢迎评论留言或者私信沟通。温馨提示:订阅后免费提供答疑服务!大家好,我是Data-Mining ,别名 liuzhen007,是一位典型的音视频技术爱好者,前后就职于传统广电巨头和..https://liuzhen.blog.csdn.net/article/details/122097624

问题

自己在原有镜像1.0的基础上,修改了一个问题,重新编译打包新镜像2.0,然后更新了 docker-compose.yml 中的版本号,停止并启动容器,发现原来的问题还没有解决。但是,自己明明已经改了。很奇怪!

解决

步骤一、确认新镜像中可执行程序是否正确

使用新镜像,启动一个容器服务,进入容器,发现可执行程序已经是最新了。

使用可执行程序特定的版本检查命令可以知道是新包,命令如下:

./bag -v

步骤二、 查看当前容器依赖的镜像版本是否正确

既然新镜像本身是正确的,那么就需要看看当前运行的容器依赖的是不是最新的镜像包即可,执行如下命令查看:

docker inspect bag

果然有问题,通过执行结果(下图)可以知道,当前运行的容器依赖的还是之前的镜像版本。

那就奇怪了,明明 docker-compose.yml 文件中已经修改了版本号。 

步骤三、验证更新命令是否正确

对别的容器使用相同的命令,验证是否可以正确更新镜像版本,验证命令如下:

docker-compose stop test

docker-compose start test

结果很打脸,确实也没有更新。但是,自己明明记得之前这样操作是有效的。于是,自己查看官方的介绍文档,其中也明确说明:docker-compose stop 只会停止当前容器,不会删除容器。因此,再执行 docker-compose start 命令之后,只会把原来的容器重新启动。所以,我们看到的现象就是镜像没有更新。尴尬😅!

这里补充一点,其实,除了 docker-compose stop 和 docker-compose start 命令之外还有一个神奇的命令 docker-compose restart,而且三者之间存在如下关系:

docker-compose restart = docker-compose stop + docker-compose start

嘿嘿,是不是很有意思。 

步骤四、使用正确的更新命令

如果修改了 docker-compose.yml 中的配置信息,想让这些改动生效,可以使用如下命令:

docker-compose up -d

看到这个命令是不是很熟悉,是的,首次启动容器的时候也是使用这个命令。

如果这样不好理解的话,也可以使用如下组合命令来让 docker-compose.yml 中修改的配置生效:

docker-compose down

docker-compose up -d 

其中,docker-compose down 命令会首先停止容器,然后再删除容器。因此,又有一个和上面类似的公示:

docker-compose down = docker-compose stop + docker-compose rm

注意:上文说的配置文件特指 docker-compose.yml 文件。如果 docker-compose.yml 文件又依赖了其他配置文件,比如 config.yml。如果修改了 config.yml 中的配置项,那么,docker-compose up -d 命令就不好使了,此时,我们就需要重启容器才可以,docker-compose restart 命令就开始“登台表演”了。

最后,我们看一组演示命令:

参考链接


docker-compose up | Docker Documentation

作者简介:😄大家好,我是 Data-Mining(liuzhen007),是一位典型的音视频技术爱好者,前后就职于传统广电巨头和音视频互联网公司,具有丰富的音视频直播和点播相关经验,对 WebRTC、FFmpeg 和 Electron 有非常深入的了解,😄公众号:玩转音视频。同时也是 CSDN 博客专家、华为云享专家(共创编辑)、InfoQ 签约作者,欢迎关注我分享更多干货!😄

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Data-Mining

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值