Docker Swarm。如何从管理节点连接到工作节点上运行的容器?

问题描述 投票:0回答:1

我需要将一些文件从工作节点上运行的容器复制到管理主机。 这个操作我需要留在经理那里做。

换句话说,如何从管理器访问工作节点上运行的容器?

有人可以帮忙吗?

docker docker-swarm docker-swarm-mode
1个回答
0
投票

这是不可能的。当您在集群中创建一个在工作节点上运行的服务时,该节点上的 Docker 将启动一个简单的 Docker 容器。该容器必须用于复制输入/输出文件(可以从管理器访问该服务(例如:

logs
cmd),但容器本身不能)!

您可以简单验证一下:

如果您运行以下命令根据服务名称获取容器ID,您可以获取实际节点上的容器ID(这意味着您将能够从实际节点连接到容器)

docker ps -q -f name=<service_name>

如果

<service_name>
的副本之一在实际服务器上运行,那么您将获得一个 Docker 容器 ID,并且可以连接它。例如:

>>> docker ps -q -f name=test_swarm_service
b1ae9e0991ef

如果实际节点上没有正在运行的副本,您将不会从命令中得到任何结果,这意味着您将无法从实际节点连接到它。

如果您确定其中一个副本在实际节点上运行,您可以从容器中复制文件(通过 Swarm 服务名称),如下所示:

docker cp $(docker ps -q -f name=<servicename>):/inside/path/ /local/path
© www.soinside.com 2019 - 2024. All rights reserved.