我知道很多人对此感到困惑,但请阅读全文。
因此,我只想创建一个暴露端口8888的dockerfile,以便以后访问jupyter笔记本。
这是我的dockerfile:
FROM continuumio/anaconda3
ENV DEBIAN_FRONTEND=noninteractive
ARG USERNAME=remote
ARG USER_UID=1000
ARG USER_GID=$USER_UID
COPY environment.yml* noop.txt /tmp/conda-tmp/
RUN apt-get update \
&& apt-get -y install --no-install-recommends apt-utils dialog 2>&1 \
&& apt-get -y install git openssh-client less iproute2 procps iproute2 lsb-release \
&& if [ -f "/tmp/conda-tmp/environment.yml" ]; then /opt/conda/bin/conda env update -n base -f /tmp/conda-tmp/environment.yml; else echo "did not find environment.yml"; fi \
&& rm -rf /tmp/conda-tmp \
&& groupadd --gid $USER_GID $USERNAME \
&& useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \
&& apt-get install -y sudo \
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME\
&& chmod 0440 /etc/sudoers.d/$USERNAME \
&& apt-get autoremove -y \
&& apt-get clean -y \
&& rm -rf /var/lib/apt/lists/*
ENV DEBIAN_FRONTEND=dialog
EXPOSE 8888
我运行以下命令以启动并运行容器:
docker build -t intel . (create the image)
docker run -t -d --publish=8888:8888 --name ig intel (start a container based on the image)
到目前为止,一切运行正常,但现在出现了我不明白的事情:
这样就好了。
但是当我尝试去
localhost:8888?/token=(the token jupyter provides)
or
ipofthecontainer:8888?/token=(the token jupyter provides)
它什么都不做(连接超时),我也不知道为什么。
我通过以下方式检查容器的ip:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name
我验证了EXPOSE是否适用于:
平台:windows
python版本:3.7.7
conda环境:是
我在这里没看到什么?
答案 0 :(得分:1)
EXPOSE
仅用于文档;它没有效果。
您需要将--publish=8888:8888
添加到docker run
,以便将容器的端口映射到主机端口。
docker run --tty --detach --publish=8888:8888 --name=ig intelligait3d
NB
publish
标志不需要host-port:container-port
匹配
答案 1 :(得分:0)
首先修改您的docker文件以启动jupyter笔记本,在Dockerfile的末尾添加以下行:
CMD ["jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--allow-root"]
然后再次构建映像,并在启动容器时使用-p
选项:--publish , -p Publish a container’s port(s) to the host
docker run -t -d -p 8888:8888 --name ig intelligait3d
,其中映射为-p <HOST port>:<CONTAINER port>
在这里您可以找到docker run
命令的参考:https://docs.docker.com/engine/reference/commandline/run/