【发布时间】:2020-07-22 17:09:41
【问题描述】:
我的问题如下: 我正在使用 makefile 运行 docker-compose,我在其中循环启动容器组。
我最终得到了多个组,名称相似:
node1_service1_1, node1_service2_1, node1_service3_1,
node2_service1_1, node2_service2_1, node2_service3_1,
node3_service1_1, node3_service2_1, node3_service3_1
如果我在非分离模式下分别启动这些组,我会在单独的窗口中看到每个组中所有容器的输出,并使用颜色编码的标签组合输出,如下所示:
node2_service1_1 | PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
node2_service1_1 | To do so, start the server, then issue the following commands:
node2_service3_1 | Enabling web-ui
node2_service1_1 |
node2_service3_1 | Enabling plugins on node rabbit@dc37ca9dfa34:
node2_service3_1 | rabbitmq_management
但是,我需要以分离模式 (-d) 运行 docker-compose,以便在启动我的实际应用程序之前启动所有组。我还注意到使用 -d 比不使用要快得多。
我的第一个想法是将docker attach 用于多个容器。不幸的是,一次只支持一个容器。
然后我尝试像这样在 bash 中对命令进行分组:
{ docker attach --no-stdin=true node2_service1_1 \
& docker attach --no-stdin=true node2_service2_1 \
& docker attach --no-stdin=true node2_service3_1; }
确实工作,但没有颜色和标签,这意味着我无法分辨哪一行是由哪个容器打印的。
问题: 有没有一种方法可以附加到多个(分离的)容器,就像在非分离模式下运行 docker-compose 时“附加”到它们一样? 欢迎提供其他建议。
【问题讨论】:
标签: bash docker docker-compose