从 Docker Swarm 中其他节点上的服务访问容器

时间:2021-06-03 08:11:51

标签: docker docker-swarm docker-exec

我让 Docker 以群模式运行,并创建了一个运行一个容器的服务。服务 my-servicenode1(管理器节点)上运行,容器 my-containernode2

上生成

node1 开始,如何在 docker exec 上运行的 my-container 上创建 node2

1 个答案:

答案 0 :(得分:0)

我发现这个项目 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 命令
  • 命令完成后,终止临时服务,传播执行命令的退出代码
  • 临时服务终止后,提取退出代码并返回