我的Docker映像构建在Jenkins CI服务器上,并被推送到我们的私有Docker Registry。我的目标是使用docker-
compose配置环境,该环境始终会启动映像的原始构建状态。
我目前在不同的机器上使用docker-compose 1.3.2和1.4.0,但是我们之前也使用了旧版本。
我总是使用docker-compose pull && docker-compose up -d
命令从注册表中获取新图像并启动它们。我相信我的首选行为在某个时间点之前都可以按预期工作,但是从那时起,它docker-compose up
开始重新运行以前停止的容器,而不是每次都启动原始构建的映像。
有办法摆脱这种行为吗?这样可以成为在docker-compose.yml配置文件中连接的一种方式,以使其不依赖于每次调用时“不要忘记”命令行上的某些内容吗?
ps。除了找到一种实现目标的方法外,我还想进一步了解这种行为的背景。我认为Docker的基本思想是构建一个不变的基础架构。docker-
compose的当前行为似乎与这种方法完全冲突..还是我在这里错过了几点?
docker-compose up --force-recreate
是一个选择,但是如果您将其用于CI,我将以构建开始,docker-compose rm -f
以停止并删除容器和卷(然后通过上拉并跟随它)。
这是我用的:
docker-compose rm -f
docker-compose pull
docker-compose up --build -d
# Run some tests
./tests
docker-compose stop -t 1
重新创建容器的原因是保留可能使用的任何数据量(同时它也会使up
速度更快)。
如果您正在执行CI,则不需要这样做,因此只需删除所有内容即可获得所需的内容。
更新:使用1.7 up --build
中添加的功能docker-compose
我的docker映像构建在Jenkins CI服务器上,并被推送到我们的专用docker注册表。我的目标是提供使用docker-compose的环境,它总是启动图像的原始构建状态。 我总是使用命令从注册表中获取新的图像并启动它们。我相信我更喜欢的行为是在某个时间点之前按预期工作,但从那以后开始重新运行以前停止的容器,而不是每次都启动最初构建的映像。 有没有办法摆脱这种行为?这种方式会不会是连接在d
问题内容: 这是我的问题: 我有一个任务在Amazon ECS上运行docker映像,但我想从容器的运行实例中创建一个新的docker映像。 我在Amazon Ecs上看到了实例的ID,我已经创建了AMI,但是我想创建一个新的docker image,可以从Amazon中提取它。 有任何想法吗 ? 问候和感谢 问题答案: 除了@Ben Whaley提供的答案外,我个人建议您 使用Docker AP
问题内容: 我有一个在定义的多个Docker容器上运行的应用程序。我的用户一切正常,输出如下所示: 现在,我试图运行与(见相关部分以下),问题是,容器现在命名,并且,这是他们创造了从无到有,并在原容器的所有自定义都将丢失。 我尝试重命名容器,但是它给出一个错误消息,指出已经有一个使用该名称的容器。 问: 是否有某种方法可以强制重用现有容器,而不是根据各自的映像创建新容器? 主管 问题答案: 只要容
问题内容: 我有一个包含4个容器的文件:redis,postgres,api,worker 在worker的开发过程中,我经常需要重新启动它才能应用更改。有什么好的方法可以在不重新启动其他容器的情况下重新启动容器(例如)? 问题答案: 这很简单:使用命令: 您可以设置杀死容器之前等待停止的时间(以秒为单位) 请注意,这将重新启动容器,但不会重建它。如果要应用更改然后重新启动,请查看其他答案。
我有一个比postgresql运行更早的服务器,我读到Docker-ComposeV3不再使用HealthChecks来执行。我想知道除了之外,我还有什么其他选项。也就是说,我希望docker-compose重新启动失败后关闭/关闭的容器。我找到了这个线程,它展示了如何用docker-compose重新启动一个容器,如何用docker-compose重新启动一个容器,但这并没有解决我的问题。谢谢!