从swarm经理运行docker exec

我有两个工人节点:worker1和worker2以及一个swarm manager。 我只在工作节点中运行所有的服务。 我需要从经理docker exec运行来访问在工作节点中创build的一些容器,但我一直得到的服务无法识别。 我知道我可以在任何工作节点上运行docker exec,它工作正常,但我不想find服务运行在哪个节点上,然后ssh到指定节点运行docker exec命令。 是否有办法在群体中这样做呢?

Swarm模式目前没有办法在正在运行的任务上运行exec。 您需要find容器并在主机上运行exec。 您可以configuration工作人员拥有他们监听的TLS保护端口,这将为您提供远程访问(请参阅泊坞窗指南 )。 您可以通过检查docker service ps $service_name的输出来查找服务中每个任务的节点。

如果这有帮助,现在您可以使用--attachable标志创build覆盖networking,以启用任何容器joinnetworking。 这是一个很棒的function,因为它具有很大的灵活性。

例如

 $ docker network create --attachable --driver overlay my-network $ docker service create --network my-network --name web --publish 80:80 nginx $ docker run --network=my-network -ti alpine sh $ wget -qO- web <!DOCTYPE html> <html> <head> ....