如何在 docker-compose 中使用正则表达式停止容器组

Moh*_*umi 6 docker docker-compose

问题:

如何停止名称以 开头的容器server-

集装箱

> sudo docker-compose ps
                        Name                                      Command               State                        Ports                     
-----------------------------------------------------------------------------------------------------------------------------------------------
server-myservername1_1                                          some commands           Up                                               
server-myservername2_1                                          some commands           Up                                                     
server-myservername3_1                                          some commands           Up                            
server-myservername4_1                                          some commands           Up                     
server-myservername5_1                                          some commands           Up                   
server-myservername6_1                                          some commands           Up                                  
console-myconsolename1_1                                        some commands           Up                             
console-myconsolename2_1                                        some commands           Up                                      
Run Code Online (Sandbox Code Playgroud)

Nit*_*ish 9

首先检查以下命令的输出,如果它仅给出您必须停止的容器的名称

docker-compose ps | grep server | awk '{print $1}'
Run Code Online (Sandbox Code Playgroud)

如果列表正确,则运行

docker stop $(docker-compose ps | grep server | awk '{print $1}')
Run Code Online (Sandbox Code Playgroud)

PS我还没有测试过上面的命令。如果没有请告诉我


小智 5

您可以简单地使用ps 命令的--filter
选项 假设您想查找 3 个容器,它们的名称以site开头

docker ps --filter name=site*
Run Code Online (Sandbox Code Playgroud)

将向您显示这三个容器的统计信息。
所以使用其中之一来停止容器

- docker ps --filter name=site* -aq | xargs docker stop
- docker stop $(docker ps --filter name=site* -aq)
Run Code Online (Sandbox Code Playgroud)