【发布时间】:2019-11-15 18:59:54
【问题描述】:
我正在学习 Docker,并设法使用 docker-compose 创建一个 RStudio 实例 和一个 Jupyter Notebook 实例来构建图像。
虽然我可以登录并从实例创建脚本,但我注意到这些脚本没有“永久”保存,我无法在我的主文件夹 /home/rstudio_scripts 和 home/jupyter_scripts 中找到它们。
我了解到,为了使在这些实例中创建的脚本/数据即使在 docker 容器关闭后也能“持久化”,您需要挂载卷。
所以我尝试在下面的 docker-compose.yml 中挂载卷并为 RStudio 和 Jupyter 创建一个特定文件夹:
但显然有问题,因为文件夹和数据都没有出现。
我的 docker-compose.yml 和 RStudio 的 Dockerfile 都在一个名为 Docker 的文件夹中,我在这个文件夹中正在构建镜像 docker build -t general_docker .
我还希望在 Rstudio 或 Jupyter 实例中创建的任何数据都可以由两个实例读取/写入,但我不知道在容器运行后是否应该使用类似 chmod 777 ... 的东西。
非常感谢任何帮助!
编辑 1:让我附上更新后的 docker-compose.yml。以下允许我在主目录中创建一个名为 R_and_Jupyter_scripts 的新文件夹,其中包含我的所有脚本,可以在我的 Rstudio 实例和 Jupyter 笔记本中访问。但我希望从 Jupyter 或 RStudio 实例创建的任何新脚本在执行“docker-compose down”后都不会消失。我应该更改 docker-compose.yml 的哪一部分?
version: "3.5"
services:
rstudio:
environment:
- USER=username
- PASSWORD=password
image: "rocker/tidyverse:latest"
build:
context: ./
dockerfile: Dockerfile
volumes:
- $HOME/R_and_Jupyter_scripts:/home/rstudio/r_scripts
container_name: rstudio
ports:
- 8787:8787
jupyter:
image: 'jupyter/datascience-notebook:latest'
ports:
- 8888:8888
volumes:
- $HOME/R_and_Jupyter_scripts:/home/jovyan/work
container_name: jupyter
编辑 2:
我已经编辑了上面的代码,只在卷中写入绝对路径(见下文),但仍然没有做我需要的。
我从 RStudio 创建了一个文本文件 output.txt,当我创建 sudo find / -name "output.txt" 时,我希望该文件位于 /home/ec2-user/R_and_Jupyter_scripts
但它最终位于两个不同的地方,看起来像是仍在容器本身中的文件夹:
/var/lib/docker/overlay2/66513c53c04786298cac012ea032be58d434131ce04e73f75bf63ca1d0e358d6/diff/home/maxence/r_scripts/output.txt
和
/var/lib/docker/overlay2/66513c53c04786298cac012ea032be58d434131ce04e73f75bf63ca1d0e358d6/merged/home/maxence/r_scripts/output.txt
docker-compose.yml:
version: "3.5"
services:
rstudio:
environment:
- USER=username
- PASSWORD=password
image: "rocker/tidyverse:latest"
build:
context: ./
dockerfile: Dockerfile
volumes:
- /home/ec2-user/R_and_Jupyter_scripts:/home/rstudio/r_scripts
container_name: rstudio
ports:
- 8787:8787
jupyter:
image: 'jupyter/datascience-notebook:latest'
ports:
- 8888:8888
volumes:
- /home/ec2-user/R_and_Jupyter_scripts:/home/jovyan/work
container_name: jupyter
【问题讨论】:
-
请勿发布代码图片。粘贴代码本身,修改图像中修改的任何密码等。
标签: r docker docker-compose jupyter-notebook docker-volume