0

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

node1,我怎样才能使一个docker exec关于my-container运行node2

4

1 回答 1

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 命令
  • 命令完成后,终止临时服务,传播执行命令的退出代码
  • 临时服务终止后,提取退出代码并返回
于 2021-07-13T07:01:38.370 回答