【问题标题】:Docker attach to multiple containersDocker 附加到多个容器
【发布时间】: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


    【解决方案1】:

    如果您只需要它们的输出(日志),我相信您实际上并不需要附加到这些容器。 docker-compose 允许使用docker-compose logs 命令查看来自所有正在运行的容器的颜色编码日志。将它与regular flags 结合使用docker-compose 命令(文件、项目等),您将获得多个“节点”的颜色编码日志。

    【讨论】:

    • 哇哦,谢谢,这正是我所需要的!出于某种原因,我认为日志只是文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-28
    • 2020-08-11
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    相关资源
    最近更新 更多