无法从此docker容器内启动Jupyter笔记本

无法从此docker容器内启动Jupyter笔记本,docker,jupyter-notebook,dockerfile,Docker,Jupyter Notebook,Dockerfile,出于对它的热爱,我不能从Docker容器中启动Jupyter。我的操作系统: Software: System Software Overview: System Version: macOS 10.13.6 (17G5019) Kernel Version: Darwin 17.7.0 Boot Volume: Macintosh HD Boot Mode: Normal Secure Virtual Memory: En

出于对它的热爱,我不能从Docker容器中启动Jupyter。我的操作系统:

Software:

    System Software Overview:

      System Version: macOS 10.13.6 (17G5019)
      Kernel Version: Darwin 17.7.0
      Boot Volume: Macintosh HD
      Boot Mode: Normal
      Secure Virtual Memory: Enabled
      System Integrity Protection: Enabled
      Time since boot: 1:10
Dockerfile:

FROM tensorflow/tensorflow:latest-py3-jupyter

LABEL maintainer="xxxx"

ADD Mask_RCNN/ /Mask_RCNN/

ADD startup.sh /

RUN apt-get -y update

WORKDIR /

RUN pip3 install -r /Mask_RCNN/requirements.txt

RUN cd /Mask_RCNN/ && python3 setup.py install

CMD /startup.sh
文件
startup.sh
非常简单

#!/bin/sh

/bin/bash -c "jupyter notebook --allow-root --no-browser --NotebookApp.token='sometoken'"
Docker映像是通过以下命令轻松构建的:

docker image build --build-arg http_proxy=someproxy --build-arg https_proxy=someproxy --build-arg no_proxy=localhost -t mask-rcnn:v20190308 .
我用它来运行容器

docker container run -e http_proxy=someproxy -e https_proxy=someproxy -e no_proxy=localhost --rm -it --name mask-rcnn   -p 6067:8888  mask-rcnn:v20190308
我得到以下错误:

[I 10:44:10.991 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
Traceback (most recent call last):
  File "/usr/local/bin/jupyter-notebook", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.5/dist-packages/jupyter_core/application.py", line 266, in launch_instance
    return super(JupyterApp, cls).launch_instance(argv=argv, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/traitlets/config/application.py", line 657, in launch_instance
    app.initialize(argv)
  File "</usr/local/lib/python3.5/dist-packages/decorator.py:decorator-gen-7>", line 2, in initialize
  File "/usr/local/lib/python3.5/dist-packages/traitlets/config/application.py", line 87, in catch_config_error
    return method(app, *args, **kwargs)
  File "/usr/local/lib/python3.5/dist-packages/notebook/notebookapp.py", line 1628, in initialize
    self.init_webapp()
  File "/usr/local/lib/python3.5/dist-packages/notebook/notebookapp.py", line 1407, in init_webapp
    self.http_server.listen(port, self.ip)
  File "/usr/local/lib/python3.5/dist-packages/tornado/tcpserver.py", line 143, in listen
    sockets = bind_sockets(port, address=address)
  File "/usr/local/lib/python3.5/dist-packages/tornado/netutil.py", line 168, in bind_sockets
    sock.bind(sockaddr)
OSError: [Errno 99] Cannot assign requested address
[I 10:44:10.991 NotebookApp]将笔记本服务器cookie secret写入/root/.local/share/jupyter/runtime/notebook\u cookie\u secret
回溯(最近一次呼叫最后一次):
文件“/usr/local/bin/jupyter notebook”,第10行,在
sys.exit(main())
文件“/usr/local/lib/python3.5/dist packages/jupyter_core/application.py”,第266行,在launch_实例中
返回super(JupyterApp,cls)。启动_实例(argv=argv,**kwargs)
文件“/usr/local/lib/python3.5/dist-packages/traitlets/config/application.py”,第657行,在launch_实例中
应用程序初始化(argv)
文件“”,第2行,在初始化中
文件“/usr/local/lib/python3.5/dist packages/traitlets/config/application.py”,第87行,在catch\u config\u error中
返回方法(应用程序、*args、**kwargs)
文件“/usr/local/lib/python3.5/dist packages/notebook/notebookapp.py”,第1628行,在初始化中
self.init_webapp()
文件“/usr/local/lib/python3.5/dist-packages/notebookapp.py”,第1407行,在init_webapp中
self.http_server.listen(端口,self.ip)
文件“/usr/local/lib/python3.5/dist-packages/tornado/tcpserver.py”,第143行,在listen中
套接字=绑定\u套接字(端口,地址=地址)
文件“/usr/local/lib/python3.5/dist packages/tornado/netutil.py”,第168行,在bind_套接字中
sock.bind(sockaddr)
OSError:[Errno 99]无法分配请求的地址

发生了什么事?我将Jupyter笔记本端口(8888)映射到一个容器端口(6067),因此我不知道问题出在哪里。

显然,只是将
startup.sh
脚本修改为

/bin/bash -c "jupyter notebook --ip 0.0.0.0 --allow-root --no-browser --NotebookApp.token='sometoken'"
一切都搞定了