Docker 附加到多个容器

cas*_*der 2 bash docker docker-compose

我的问题如下:我正在使用 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
Run Code Online (Sandbox Code Playgroud)

如果我在非分离模式下单独旋转这些组,我会在一个单独的窗口中看到每个组中所有容器的输出,并使用颜色编码标签组合输出,如下所示:

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
Run Code Online (Sandbox Code Playgroud)

但是,我需要在分离模式 (-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; }
Run Code Online (Sandbox Code Playgroud)

确实有效,没有颜色,也没有标签,这意味着我无法分辨哪一行是由哪个容器打印的。

问题: 是否有一种方法可以附加到多个(分离的)容器,就像在非分离模式下运行 docker-compose 时“附加”到它们一样?欢迎提出替代建议。

Yur*_*rov 6

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