如何停止所有容器,当一个容器与docker合成?

直到最近,当一个人在做docker-compose up ,为一堆集装箱docker-compose up ,一个开始的集装箱停了下来,所有的集装箱都停了下来。 从https://github.com/docker/compose/issues/741开始 ,情况就不是这样了,这对我们来说真的很烦人:我们使用docker-compose来运行seleniumtesting,这意味着启动应用程序服务器,启动selenium集线器+节点,启动testing驱动程序,然后在testing驱动程序停止时退出。

有没有办法找回旧的行为?

你有没有尝试在你提供的链接build议的工作?

假设你的testing脚本与此类似:

 $ docker-compose rm -f $ docker-compose build $ docker-compose up --timeout 1 --no-build 

当应用程序testing结束时,撰写将退出并且testing完成。

在这种情况下,使用新的docker-compose版本,将testing容器更改为默认的no-op命令(类似于echo或true),然后按如下所示更改testing脚本:

 $ docker-compose rm -f $ docker-compose build $ docker-compose up --timeout 1 --no-build -d $ docker-compose run tests test_command... $ docker-compose stop 

使用运行允许您从testing运行中获取退出状态,而您只能看到testing的输出(不是所有的依赖关系)。

参考

如果这是不可接受的,您可以参考Docker远程API并监视容器的stop事件并对其执行操作。

一个示例用法是用golang编写的golang -gen工具,用于golang 容器启动事件 ,自动重新生成configuration文件。

您可以使用:

docker – 组成 – 在集装箱出口

如果其中一个容器停止,将会停止所有容器

我不确定这是否是您的问题的完美答案,但是Docker的maestro允许您将多个Docker容器作为单个单元进行pipe理。

使用YAML文件对它们进行分组时应该会感到很熟悉。