我是docker
的新手,我想将jupyter
和python
添加到基于Rocker
的docker
图像中(我想同时拥有python
和R
)。我能够安装python3
和jupyter
及其相关性。图像创建成功。运行容器后,我可以访问端口RStudio server
上的7878
,但是很遗憾,端口8888
jupyter
上的端口无法正常工作。
我的Dockerfile
看起来像这样:
FROM rocker/rstudio:3.5.0
# Basic dependencies
RUN apt-get update && apt-get install -y \
libcurl4-gnutls-dev \
libssl-dev \
libpng-dev \
vim \
nano \
libxml2 \
libxml2-dev \
curl \
gnupg2 \
build-essential libssl-dev \
libpq-dev \
ssh
SHELL ["/bin/bash", "-c"]
# Install python3 and pip3
RUN apt-get update && apt-get install -y python3 \
python3-pip \
build-essential
# Install jupyter
RUN pip3 install jupyter
EXPOSE 8888
RUN mkdir /notebooks
CMD jupyter notebook --no-browser --ip 0.0.0.0 --allow-root --port 8888 /notebooks
CMD ["/init"]
构建并运行:
docker build -f Dockerfile -t user/my_docer:1.0 .
docker run -d --name my_docker -p 8787:8787 -p 8888:8888 -v `pwd`:/mnt user/my_docer:1.0
答案 0 :(得分:0)
您不能使用多个CMD
指令-第二个指令将覆盖第一个指令。如果您需要在容器中运行多个进程,这是一种不好的做法,则最好使用supervisord
之类的软件。
另一种选择是将所有内容放入单个CMD
指令中,例如
CMD ["/bin/bash", "-c", "'jupiter blahblah && /init'"]