docker - 如何将 jupyter 添加到摇杆图像?
问题描述
我是新手docker
,我正在尝试将jupyter
and添加python
到我的docker
图像中Rocker
(我想同时拥有python
and R
)。我能够安装python3
并jupyter
使用依赖项。图像创建成功。运行容器后,我可以访问RStudio server
on port 7878
,但不幸的8888
jupyter
是 on port 无法正常工作。
我的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
解决方案
您不能使用多个CMD
指令 - 第二个会覆盖第一个。如果您需要在容器中运行多个进程,这被视为一种不好的做法,最好使用supervisord
.
另一种选择是将所有内容放在一条CMD
指令中,例如
CMD ["/bin/bash", "-c", "'jupiter blahblah && /init'"]
推荐阅读
- cmake - 在生成器表达式中正确使用平台变量
- web - Web App 是否可以用作 BLE 广告的低功耗蓝牙信标?
- powershell - 调用函数作为计算属性以显示 MB 和 GB Powershell 脚本
- c# - c#无法在linux中加载字体
- c# - 如何将此 SQL 代码转换为 LINQ 格式?
- symfony - 学说:计数左连接条件行
- java - 通过套接字从 Java 客户端向 NodeJS 服务器发送字符串也会发送不需要的字符
- php - 仅当 URL 参数存在时如何显示值?
- c# - 如何在 WPF 应用程序中集成 toast 通知?
- angular - 获取 js 文件中的存储状态