2017-07-27 80 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