我有https://hub.docker.com/r/jupyter/datascience-notebook/的jupyter笔记本码头图片 通常我使用此命令运行笔记本
docker run -it --rm -p 8888:8888 -v /home/folder/Projects/:/home/jovyan/Projects -e NB_UID=1000 jupyter/datascience-notebook
这完美无缺,我收到了笔记本正在运行的消息。我能够创建笔记本,运行它们等
现在我想从https://github.com/ipython-contrib/jupyter_contrib_nbextensions安装jupyter contrib扩展。我按照https://gist.github.com/glamp/74188691c91d52770807的说明进行操作
使用
docker run -it jupyter/datascience-notebook /bin/bash
命令我能够进入容器。然后我使用pip和bash来安装包。所有这一切顺利。我退出容器并使用容器ID提交更改。
docker commit containerid imagename
问题是在提交更改后,当我运行容器时,我会看到bash提示符而不是notebook start命令。
是否有办法在不更改映像的启动命令的情况下提交包安装更改。或者有没有办法编辑容器图像而不实际运行图像?
答案 0 :(得分:1)
问题是您已经提交了一个使用命令/bin/bash
启动的容器。
您需要的是正常启动容器使用您最初添加-d
选项以释放终端的命令:
docker run -it --rm -d --name datascience-notebook -p 8888:8888 -v /home/folder/Projects/:/home/jovyan/Projects -e NB_UID=1000 jupyter/datascience-notebook
然后从终端执行到容器并安装contrib extenstions
。
docker exec -it datascience-notebook /bin/bash
退出容器并提交图像:
docker commit datascience-notebook <imagename>
<强>更新强>
如果在容器运行时无法安装扩展,解决方案是使用Dockerfile构建自定义Docker镜像
FROM jupyter/datascience-notebook
RUN <installation commands>
最后使用docker build -t <image-name> .
构建图像并运行构建的图像。