龙卷风/ graphlab无法在docker中分配请求的地址

运行gl.canvas.set_target('ipynb')gl.canvas.set_target('ipynb')容器中抛出下面gl.canvas.set_target('ipynb')

即使使用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 

它看起来更像是docker /龙卷风问题,而不是graphlab问题,因为在主机中相同的命令起作用。

我使用以下命令启动了Docker容器:

 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" 

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

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

在容器启动时,我的/ etc / hosts有这样几行:

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

我必须改变这些:

 127.0.0.1 localhost ::1 ip6-localhost ip6-loopback