如何在 docker-swarm 的工作节点中订购容器?

How do I order a container in the worker node of the docker-swarm?

我用 docker-swarm 构建了一个管理节点和一个工作节点。

通过 docker-compose 创建了一个项目。

我想从管理器节点命令工作节点中的容器“A”。

所以我输入了命令:

docker exec -it A mkdir /home/test

但是打印出找不到容器名称。

如何从manager节点执行命令到worker节点上的容器?

注意。目前,我正在通过 ssh 和 wc 命令绕过这个问题。还有其他办法吗?

很多 docker 资源,例如容器和卷,不是全局的,不能从 swarm 管理器访问,只能从托管资源的管理器访问。

这意味着访问资源是一个两步过程——通常向 swarm 管理器询问一些 swarm 资源(例如服务),为您提供有关本地感兴趣资源的信息:(例如节点和容器 ID ).

真正访问各个节点,ssh是正确的方式,但是docker可以直接使用。 DOCKER_HOST,或者一个-H参数可以传递一个ssh uri

docker -H ssh://user@node exec A /bin/sh

或者您可以创建和使用命名的 docker 上下文:

#Create a context
docker create context node1 --description "Worker1" --docker "host=ssh://user@node1"
#Various ways of using the context
docker -c node1 exec A /bin/sh
DOCKER_CONTEXT=node1 docker exec A /bin/sh
docker context use node1
docker exec A /bin/sh
docker context use default

IDK 如果有必要,但如果您设置了用于 no-password 访问的 ssh 帐户(通过安装 pub 密钥等),它肯定会有所帮助。