背景

平时我们在用docker-compose更新服务的时候,当我们敲下docker-compose up -d service回车之后到服务成功启动起来之前的这段时间,该service是不会提供服务的。这还是建立在服务正常启动的情况下,如果服务没有正常启动,那该service停止服务的时间会更长。有没有一种可以在更新的时候不打扰原本服务的运行,在更新结束后替换调原本的服务呢?

思路

命令行输入docker-compose up --help回车我们会发现:
在这里插入图片描述
相信看到这,大家或多或少都有点思路了吧~那就是我们的更新服务的时候,容器数量设置成2个,因为原本该服务已经有一个容器在跑了,这个时候docker会再生成一个新的容器用来跑新的服务,当新的服务起来的时候,我们可以停止并删除原来老的容器,这样就实现了滚动更新。

步骤

1.加载要更新的镜像包

docker load < service.tar

2.启动服务(设置两个运行容器)

docker-compose up -d --scale service=2 --no-recreate

ps:这里的service是你的服务名

3.停止并删除原本服务容器

docker stop containerId
docker rm containerId

ps:这里的containerId是你老服务的容器id

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐