首页 > 解决方案 > 为什么docker-compose非顺序打印容器输出

问题描述

我有 4 个使用 docker-compose 文件运行的容器。其中一个容器“协调”其他容器工作,因此调用其他容器来执行某些任务。

我的问题是,一旦所有其他容器完成并因此完成显示它们自己的输出,就会始终显示此“协调者”容器的输出。

例如,容器的工作流程如下所示:

  1. 编排器容器
  2. 集装箱 2
  3. 编排器容器
  4. 集装箱 3
  5. 编排器容器
  6. 集装箱 4
  7. 编排器容器

有没有办法强制按顺序显示输出?

标签: dockerdocker-compose

解决方案


当您在附加的 mod 中运行 docker-compose 时(没有 -d 标志以分离模式运行容器),您将实时获得所有容器的输出,并且无法范围输出。

可能的解决方案是使用 docker-compose 文件中的设置禁用容器 2、3、4 中的所有日志:

logging:
    driver: none

在这种情况下,您将仅获得编排器容器的输出。将此容器拆分为不同 docker-compose 文件的其他方法。一个将与编排器容器一起使用,第二个将与其他容器一起使用。您可以使用定义文件运行 docker-compose:

docker-compose up -f orchestrater_docker_compose.yml
docker-compose up -f services_docker_compose.yml

推荐阅读