我正在学习Docker,并设法使用 docker-compose 构建映像来创建 RStudio实例和 Jupyter Notebook 实例。
虽然我可以登录并从实例创建脚本,但我注意到这些脚本并未“永久”保存,因此无法在主文件夹git show <commit_id> | grep Author
和/home/rstudio_scripts
中找到它们。
我了解到,即使在Docker容器关闭后,为了使在这些实例中创建的脚本/数据“持久”,您也需要挂载卷。
所以我尝试在以下docker-compose.yml中挂载卷并为RStudio和Jupyter创建一个特定的文件夹:
但是显然有问题,因为文件夹和数据都没有出现。
我的 docker-compose.yml 和RStudio的 Dockerfile 都位于名为 Docker 的文件夹中,该文件夹位于我正在构建映像泊坞窗home/jupyter_scripts
我还希望在Rstudio或Jupyter实例中创建的任何数据都可以被这两个实例读取/写入,但是我不知道之后是否应该使用build -t general_docker .
之类的容器。运行。
任何帮助,不胜感激!
编辑1 :让我附上更新后的docker-compose.yml。以下内容使我可以在主目录中创建一个名为 R_and_Jupyter_scripts 的新文件夹,其中包含我的所有脚本,可以在我的Rstudio实例和Jupyter笔记本中访问。但是我希望从Jupyter或RStudio实例创建的任何新脚本在执行“ docker-compose down”后都不会消失。我应该更改 docker-compose.yml 的哪一部分?
chmod 777 ...
编辑2:
我已经编辑了上面的代码以仅在卷中写入绝对路径(请参见下文),但仍然无法满足我的需要。
我已经从RStudio创建了一个文本文件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
,当我执行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
docker-compose.yml:
/var/lib/docker/overlay2/66513c53c04786298cac012ea032be58d434131ce04e73f75bf63ca1d0e358d6/merged/home/maxence/r_scripts/output.txt