运行 docker 群管理器执行
run docker exec from swarm manager
我有两个工作节点:worker1 和 worker2 以及一个群管理器。我 运行 仅在工作节点中启用所有服务。我需要从管理器 docker exec 运行 访问在工作节点中创建的一些容器,但我一直收到无法识别该服务的消息。我知道我可以 运行 docker 在任何工作节点中执行并且它工作正常但我不想必须找到服务在哪个节点上 运行ning 然后 ssh 到指定节点 运行 docker 执行命令。有没有办法成群结队地这样做?
Swarm 模式目前无法运行 执行 运行ning 任务。您需要在主机上找到容器和 运行 执行程序。您可以将工作人员配置为在其侦听的 TLS 保护端口上进行配置,这将为您提供远程访问权限(请参阅 docker's guide)。您可以通过检查 docker service ps $service_name
.
的输出来查找服务中每个任务的节点
如果这有帮助,现在您可以使用 --attachable
标志创建覆盖网络,以允许任何容器加入网络。这是一个很棒的功能,因为它具有很大的灵活性。
例如
$ docker network create --attachable --driver overlay my-network
$ docker service create --network my-network --name web --publish 80:80 nginx
$ docker run --network=my-network -ti alpine sh
$ wget -qO- web
<!DOCTYPE html>
<html>
<head>
....
我有两个工作节点:worker1 和 worker2 以及一个群管理器。我 运行 仅在工作节点中启用所有服务。我需要从管理器 docker exec 运行 访问在工作节点中创建的一些容器,但我一直收到无法识别该服务的消息。我知道我可以 运行 docker 在任何工作节点中执行并且它工作正常但我不想必须找到服务在哪个节点上 运行ning 然后 ssh 到指定节点 运行 docker 执行命令。有没有办法成群结队地这样做?
Swarm 模式目前无法运行 执行 运行ning 任务。您需要在主机上找到容器和 运行 执行程序。您可以将工作人员配置为在其侦听的 TLS 保护端口上进行配置,这将为您提供远程访问权限(请参阅 docker's guide)。您可以通过检查 docker service ps $service_name
.
如果这有帮助,现在您可以使用 --attachable
标志创建覆盖网络,以允许任何容器加入网络。这是一个很棒的功能,因为它具有很大的灵活性。
例如
$ docker network create --attachable --driver overlay my-network
$ docker service create --network my-network --name web --publish 80:80 nginx
$ docker run --network=my-network -ti alpine sh
$ wget -qO- web
<!DOCTYPE html>
<html>
<head>
....