【问题标题】:Access container from service on other node in Docker Swarm从 Docker Swarm 中其他节点上的服务访问容器
【发布时间】:2021-08-21 08:38:57
【问题描述】:

我让 Docker 在 swarm 模式下运行,并创建了一个运行一个容器的服务。服务my-service 在node1(Manager 节点)上运行,容器my-container 在node2 上生成

来自node1,我怎样才能在my-container 上运行docker exec 在node2 上运行?

【问题讨论】:

    标签: docker docker-swarm docker-exec


    【解决方案1】:

    我找到了这个项目,skopos-plugin-swarm-exec,它解决了我的问题。

    可以这样使用:

    docker run -v /var/run/docker.sock:/var/run/docker.sock datagridsys/skopos-plugin-swarm-exec task-exec --image <task id> <command>
    

    工作原理(内部)
    从任务 ID 和要执行的命令开始,以下是所采取的步骤:

    • 获取运行目标任务的节点ID,以及该节点上任务的容器ID
    • 创建临时服务,使用相同的容器镜像,以及将临时服务的任务放置在目标任务所在节点的调度约束
    • 使用节点本地 Docker 引擎 API 执行相当于 docker exec 命令的命令
    • 命令完成后,终止临时服务,传播执行命令的退出代码
    • 临时服务终止后,提取退出码并返回

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多