从swarm manager运行docker exec

时间:2017-06-19 19:55:43

标签: docker docker-swarm

我有两个工作节点:worker1和worker2以及一个swarm管理器。我只在工作节点中运行所有服务。我需要从管理器docker exec运行来访问工作节点中创建的一些容器,但我一直认为服务无法识别。我知道我可以在任何工作节点中运行docker exec并且它工作正常但我不想在服务运行的节点上找到,然后ssh到指定的节点运行docker exec命令。有没有办法在swarm中这样做?

2 个答案:

答案 0 :(得分:7)

Swarm模式目前没有办法在正在运行的任务上运行exec。您需要找到容器并在主机上运行exec。您可以将工作程序配置为具有他们侦听的受TLS保护的端口,这将为您提供远程访问(请参阅docker's guide)。您可以通过检查docker service ps $service_name的输出来查找服务中每个任务的节点。

答案 1 :(得分:2)

如果这有帮助,现在您可以使用--attachable标志创建覆盖网络,以使任何容器都能加入网络。这是一个很棒的功能,因为它具有很大的灵活性。

E.g。

$ 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>
....
相关问题