【问题标题】:ipyparallel/ipcluster inside docker containerdocker容器内的ipyparallel/ipcluster
【发布时间】:2018-05-18 06:41:40
【问题描述】:

我在 linux 主机上运行 ipcluster。设置与这个 SO 问题 (https://stackoverflow.com/a/31479269/2146052) 非常相似。

我的ipcontroller_config.py有以下调整

myip = '*'
c.HubFactory.engine_ip = myip
c.HubFactory.client_ip = myip
c.HubFactory.monitor_ip = myip
c.HubFactory.ip = myip

c.HubFactory.iopub = (10001, 10002)
c.HubFactory.control = (10003,10004)
c.HubFactory.task = (10005,10006)
c.HubFactory.mux = (10007,10008)
c.HubFactory.regport = 10009
c.HubFactory.hb = (10010,10011)
c.HubFactory.notifier_port = 10012

我将 docker 容器启动为

docker run -it --rm -p 10000-10012:10000-10012 <myimg> /bin/bash
ipcluster start -n4

ipcluster 启动正常,但是当我尝试连接时,我得到Hub connection timeout。如果我在 docker 之外运行相同的配置,则不会发生此错误。除了简单的端口转发,我还需要做进一步的调整吗?

【问题讨论】:

  • 这个运气好吗?看到同样的东西
  • 不幸的是,到目前为止运气不佳

标签: docker ipython


【解决方案1】:

最后是缺少的部分:

当从不同的 docker 容器连接时,需要在配置中指定 location

c.IPControllerApp.location = '<name of service in docker-compose>'

这记录在https://ipyparallel.readthedocs.io/en/latest/process.html#ports-and-addresses 下(有关更多信息,请参阅 --location 部分)

还要确保这两个服务在同一个 docker 网络上 https://stackoverflow.com/a/38089080/2146052 看看 https://docs.docker.com/compose/networking/

ipcontroller_config.py 因此应该看起来像这样(如果第一次并行运行需要通过运行来创建默认配置:ipython profile create --parallel --profile=myprofile

myip = '*'
c.HubFactory.engine_ip = myip
c.HubFactory.client_ip = myip
c.HubFactory.monitor_ip = myip
c.HubFactory.ip = myip
# c.IPControllerApp.location = '<name of service in docker-compose>'
c.IPControllerApp.location = 'ipyp'

c.HubFactory.iopub = (10001, 10002)
c.HubFactory.control = (10003,10004)
c.HubFactory.task = (10005,10006)
c.HubFactory.mux = (10007,10008)
c.HubFactory.regport = 10009
c.HubFactory.hb = (10010,10011)
c.HubFactory.notifier_port = 10012

示例docker-compose.yml 设置

version: '3.3'
services:
  ipyp:
    image: "ipyp"
    build: .
    ports:
     - "10000-10012:10000-10012"
    command: ipcluster start -n2 --profile=myprofile
    volumes:
      - configdata:/root/.ipython/
    restart: always

  ipyp_test:
    image: "ipyp"
    build: .
    ports:
     - "9999:9999"
    command: jupyter lab --allow-root --port 9999 --ip=0.0.0.0
    volumes:
      -configdata:/parallelconfig:ro
    restart: always

volumes:
  configdata:

通过在 ipyp_test 服务中启动笔记本并运行来尝试设置

import ipyparallel
fl = '/parallelconfig/profile_myprofile/security/ipcontroller-client.json'
rc = ipyparallel.Client(fl)
rc.ids

【讨论】:

    猜你喜欢
    • 2022-10-04
    • 1970-01-01
    • 2018-06-27
    • 2020-05-05
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多