我一直在学习Docker,其最终目标是使用它来提供和共享Jupyter笔记本。下面是一个例子Dockerfile:无法连接到由Docker服务的Jupyter Notebook
FROM python:2
ENV PYTHONUNBUFFERRED 1
RUN pip install jupyter
RUN useradd --create-home --home-dir /home/docker --shell /bin/bash docker
RUN adduser docker sudo
ADD start.sh /home/docker/start.sh
RUN chmod +x /home/docker/start.sh
RUN chown docker /home/docker/start.sh
ADD prod_sentiment.ipynb /home/docker/prod_sentiment.ipynb
ADD output.txt /home/docker/output.txt
RUN chmod +x /home/docker/output.txt
RUN chown docker /home/docker/output.txt
EXPOSE 8888
RUN usermod -a -G sudo docker
RUN echo "docker ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
USER docker
ENV HOME=/home/docker
ENV SHELL=/bin/bash
ENV USER=docker
RUN printenv
CMD ./home/docker/start.sh
的start.sh
文件看起来是这样的:
#! /bin/sh
echo 'starting'
nohup jupyter notebook --no-browser > /home/docker/output.txt
然后我:
docker build --rm -t 'test' .
docker run -d -ti -p 8888:8888 test
从这一点来说,我会假设我应该能够浏览到localhost:8888
并且看Jupyter笔记本。如果我通过以下方式连接到容器:docker exec -i -t container_id /bin/bash
我可以tail -f /home/docker/output.txt
看到我可以从Docker容器中卷曲它。同样ps auwx | grep 'jupyter'
确认Jupyter Notebook网络服务器正在运行。
除了绑定这个端口8888:8888
和EXPOSING
它在Dockerfile中,我错过了什么?每当我连接到http://localhost:8888
它说'本地主机没有发送任何数据'。
我使用泊坞窗的Mac版本1.12.1-beta26.1构建1200
哦,我的天啊。哈!谢谢!!!! –