如何在已部署的docker堆栈上停靠exec -ti CONTAINER_NAME/bin/bash?

Dav*_*son 5 aws-cloudformation docker docker-compose docker-swarm

我在AWS上使用swarm部署了一个docker堆栈:

docker stack deploy --with-registry-auth -c docker-stack.yml pipeline
Run Code Online (Sandbox Code Playgroud)

我想在docker-stack.yml中定义的一个容器中获得一个交互式bash会话,但是docker exec -ti CONTAINER_NAME /bin/bash我尝试过的各种调用都失败了.

派生要传递给的容器名称的正确方法是什么:

docker exec -it CONTAINER_NAME /bin/bash
Run Code Online (Sandbox Code Playgroud)

鉴于:

docker service ps pipeline_django
Run Code Online (Sandbox Code Playgroud)

返回有效的服务信息并:

docker stack ps pipeline
Run Code Online (Sandbox Code Playgroud)

返回有效的堆栈信息.

传递给命令时,从这些命令派生container_name的任何记录方法都不起作用docker exec -it.他们都失败了:

来自守护程序的错误响应:没有这样的容器

我试过这里列出的东西:

在docker swarm服务中执行命令

ars*_*nio 0

您可以使用以下命令并将 SERVICE_NAME 替换为您的服务名称:

docker exec -it \
    $(docker stack ps pipeline| grep SERVICE_NAME | cut -d' ' -f1) /bin/bash
Run Code Online (Sandbox Code Playgroud)

此命令查找您的服务的容器 ID:

docker stack ps pipeline| grep SERVICE_NAME | cut -d' ' -f1
Run Code Online (Sandbox Code Playgroud)