【问题标题】:run docker exec from swarm manager从群管理器运行 docker exec
【发布时间】:2017-11-22 03:50:40
【问题描述】:

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

【问题讨论】:

    标签: docker docker-swarm


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    例如

    $ 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>
    ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多