Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker swarm节点无法检测swarm中其他主机的服务_Docker_Docker Swarm_Dask_Docker Swarm Mode_Dask Distributed - Fatal编程技术网

Docker swarm节点无法检测swarm中其他主机的服务

Docker swarm节点无法检测swarm中其他主机的服务,docker,docker-swarm,dask,docker-swarm-mode,dask-distributed,Docker,Docker Swarm,Dask,Docker Swarm Mode,Dask Distributed,我的目标是在一组3台linux(ubuntu)物理工作站上建立一个docker swarm,并在此基础上运行一个集群 $ docker --version Docker version 17.06.0-ce, build 02c1d87 我能够初始化docker swarm并将所有机器添加到swarm cordoba$ docker node ls ID HOSTNAME STATUS AVAILABILITY MANAGER

我的目标是在一组3台linux(ubuntu)物理工作站上建立一个docker swarm,并在此基础上运行一个集群

$ docker --version
Docker version 17.06.0-ce, build 02c1d87
我能够初始化docker swarm并将所有机器添加到swarm

cordoba$ docker node ls
ID                            HOSTNAME    STATUS    AVAILABILITY MANAGER STATUS
j8k3hm87w1vxizfv7f1bu3nfg     box1        Ready     Active              
twg112y4m5tkeyi5s5vtlgrap     box2        Ready     Active              
upkr459m75au0vnq64v5k5euh *   box3        Ready     Active              Leader
然后在引导框上运行
docker stack deploy-c docker-compose.yml dask cluster

这是docker compose.yml:

version: "3"

services:

  dscheduler:
    image: richardbrks/dask-cluster
    ports:
     - "8786:8786"
     - "9786:9786"
     - "8787:8787"
    command: dask-scheduler
    networks:
      - distributed
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
      placement:
        constraints: [node.role == manager]

  dworker:
    image: richardbrks/dask-cluster
    command: dask-worker dscheduler:8786
    environment:
      - "affinity:container!=dworker*"
    networks:
      - distributed
    depends_on:
      - dscheduler
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure

networks:
  distributed:
这里是richardbrks/dask集群:

# Official python base image
FROM python:2.7    
# update apt-repository
RUN apt-get update
# only install enough library to run dask on a cluster (with monitoring)
RUN pip install --no-cache-dir \
    psutil \
    dask[complete]==0.15.2 \
    bokeh
部署swarm时,
dworker
节点与
dscheduler
不知道什么是
dscheduler
。我用ssh访问了其中一个节点,并查看了env, 而且
dscheduler
不在那里。我还尝试ping
dscheduler
,得到了“ping:unknown host”

我以为docker应该为服务发现提供基于dns的内部服务 因此,调用
dscheduler
将把我带到
dscheduler
节点的地址

我的电脑上有没有我丢失的设置?或者我的文件有什么遗漏

根据swarm中的说明,所有这些代码也位于

由于一些网络限制(我认为与虚拟 IPs),ping工具将不适用于覆盖网络。你是吗 可以使用其他工具(如dig)解析的服务名称

就我个人而言,我总是可以使用curl从一个服务连接到另一个服务。您的设置似乎正确,您的服务应该能够通信


swarm中不支持FYI依赖


更新2:我认为您没有使用该端口。Servicename不能替换端口。您需要使用容器内部知道的端口。

根据swarm:

由于一些网络限制(我认为与虚拟 IPs),ping工具将不适用于覆盖网络。你是吗 可以使用其他工具(如dig)解析的服务名称

就我个人而言,我总是可以使用curl从一个服务连接到另一个服务。您的设置似乎正确,您的服务应该能够通信


swarm中不支持FYI依赖




更新2:我认为您没有使用该端口。Servicename不能替换端口。您需要使用容器内部知道的端口。

dask或docker swarm没有问题。问题是路由器固件不正确。在我返回到路由器固件的早期版本后,集群工作正常。

dask或docker swarm没有任何问题。问题是路由器固件不正确。在我返回到路由器固件的早期版本后,集群工作正常。

您能描述一下如何尝试访问其他服务吗?你在dworker容器中做什么?@herm是的。我用ssh连接到运行
dworker
节点的计算机中,使用
docker ps
获取正在运行的容器的id,然后键入
docker exec-ti/bin/bash
进入节点。这就是我试图ping
dscheduler
的地方。您混淆了术语。群中的节点是一台计算机。使用docker exec可以输入容器而不是节点。您使用了错误的名称,但做了正确的事情:)我检查了,您的设置工作正常,我可以在不同的机器上从工作人员远程登录到计划程序。请描述您如何尝试访问其他服务?你在dworker容器中做什么?@herm是的。我用ssh连接到运行
dworker
节点的计算机中,使用
docker ps
获取正在运行的容器的id,然后键入
docker exec-ti/bin/bash
进入节点。这就是我试图ping
dscheduler
的地方。您混淆了术语。群中的节点是一台计算机。使用docker exec可以输入容器而不是节点。您使用了错误的名称,但做了正确的事情:)我检查了,您的安装工作正常,我可以在不同的机器上从worker远程登录到scheduler我安装并在容器中运行了dig,但出现了
NXDOMAIN
错误,这意味着它找不到主机。您的问题链接显示了无法连接其他主机上的其他服务的其他一些可能原因。我会仔细阅读这个问题,看看他们的建议是否能解决我的问题。另外,感谢您通知我有关
依赖于
。Tarun Lalwani确认您的撰写文件是正确的。您用于连接容器的确切命令是什么?对于curl,它应该是:curl容器dworker应该从compose文件中的命令
dask worker dscheduler:8786
连接到dscheduler,其中
dscheduler
应该是调度器的ip,8786是端口。这回答了你的问题吗?是的。你能通过IP到达另一台机器吗?可能端口未打开或防火墙正在干预。发现问题:我们办公室路由器的固件有错误。一旦我回到以前的固件版本,一切正常@赫姆:谢谢你的帮助!我在容器中安装并运行了dig,但是得到了一个
NXDOMAIN
错误,这意味着它找不到主机。您的问题链接显示了无法连接其他主机上的其他服务的其他一些可能原因。我会仔细阅读这个问题,看看他们的建议是否能解决我的问题。另外,感谢您通知我有关
依赖于
。Tarun Lalwani确认您的撰写文件是正确的。您用于连接容器的确切命令是什么?对于curl,它应该是:curl容器dworker应该从compose文件中的命令
dask worker dscheduler:8786
连接到dscheduler,其中
dscheduler
应该是调度器的ip,8786是端口。这回答了你的问题吗?是的。你能通过IP到达另一台机器吗?可能端口未打开或防火墙正在干预。找到