我一直在学习 Docker,最终目标是使用它来提供和共享 Jupyter Notebooks。下面是一个示例 Dockerfile:
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 Notebook。如果我通过以下方式连接到容器:docker exec -i -t container_id /bin/bash
我可以tail -f /home/docker/output.txt
看到我可以从 Docker 容器中卷曲它。同样ps auwx | grep 'jupyter'
确认 Jupyter Notebook 网络服务器正在运行。
除了将端口绑定到Dockerfile8888:8888
中EXPOSING
之外,我还缺少什么?每当我连接到http://localhost:8888
它时,它都会说“本地主机没有发送任何数据”。
我正在使用 Docker for Mac 版本 1.12.1-beta26.1 build 1200。