2017-07-27 76 views
1

运行gl.canvas.set_target('ipynb')在docker容器中抛出下面的exe文件。龙卷风/ graphlab不能在docker中分配请求的地址

即使使用gl.canvas.set_target('ipynb', port=28892)其中28892是开放端口,错误仍然保持不变。

--------------------------------------------------------------------------- 
error          Traceback (most recent call last) 
<ipython-input-257-3f215a521352> in <module>() 
----> 1 gl.canvas.set_target('ipynb') 

/opt/conda/envs/gl-env/lib/python2.7/site-packages/graphlab/canvas/utils.pyc in set_target(target, port) 
    102    # and to preserve backwards compatibility/other use cases 
    103    # (running a notebook exported to .py, for instance) 
--> 104   _active_target = targets[target]() 
    105 
    106  # track metrics on target 

/opt/conda/envs/gl-env/lib/python2.7/site-packages/graphlab/canvas/target.pyc in __init__(self, port) 
    25   self.state = graphlab.canvas.state.State() 
    26   # TODO server is not necessary in static IPython/Jupyter Notebook 
---> 27   self.server = graphlab.canvas.server.Server(self.state, port) 
    28   # add data objects to left nav 
    29   DataView = graphlab.canvas.views.data_objects.DataObjectsView() 

/opt/conda/envs/gl-env/lib/python2.7/site-packages/graphlab/canvas/server.pyc in __init__(self, state, port) 
    44 
    45   #Will raise exception if port cannot be bound 
---> 46   self.__bind_socket(port) 
    47 
    48  # methods 

/opt/conda/envs/gl-env/lib/python2.7/site-packages/graphlab/canvas/server.pyc in __bind_socket(self, port) 
    93  # Raises exception if socket cannot be bound on requested port 
    94  def __bind_socket(self, port=None): 
---> 95   sockets = tornado.netutil.bind_sockets(port,"localhost") 
    96   self.__server.add_sockets(sockets) 
    97   with self.__port_lock: 

/opt/conda/envs/gl-env/lib/python2.7/site-packages/tornado/netutil.pyc in bind_sockets(port, address, family, backlog, flags, reuse_port) 
    194 
    195   sock.setblocking(0) 
--> 196   sock.bind(sockaddr) 
    197   bound_port = sock.getsockname()[1] 
    198   sock.listen(backlog) 

/opt/conda/envs/gl-env/lib/python2.7/socket.pyc in meth(name, self, *args) 
    226 
    227 def meth(name,self,*args): 
--> 228  return getattr(self._sock,name)(*args) 
    229 
    230 for _m in _socketmethods: 

error: [Errno 99] Cannot assign requested address 

看起来超过graphlab问题泊坞窗/龙卷风的问题,因为在主机相同的命令作品。

sudo docker run -it -v /path/to/data:/root/data \ 
    -v ~/code/work/src:/root/src \ 
    -p 8888:8888 -p 28892:28892 company/graphlab \ 
    /bin/bash -c "source activate gl-env && jupyter notebook --notebook-dir=~/src --ip='*' --port=8888 --no-browser" 

有没有办法找出这个端口,这样我就可以打开它或任何其他方式来解决这个问题:

我使用下面的命令开始了我的搬运工容器?

回答

2

编辑你的/ etc/hosts文件(在容器内)只包含1个localhost的ip地址值为我解决了这个问题。它只适用于在运行的容器上编辑它。编辑图像时编辑它并不能解决问题。

在从容器我的/ etc开机/主机具有行:

127.0.0.1 localhost 
::1 localhost ip6-localhost ip6-loopback 

我不得不改变那些:

127.0.0.1 localhost 
::1 ip6-localhost ip6-loopback