【问题标题】:Persistent volumes with docker-compose and RStudio/Jupyter使用 docker-compose 和 RStudio/Jupyter 的持久卷
【发布时间】:2019-11-21 11:39:31
【问题描述】:

我正在尝试使用 docker-compose 构建图像来创建 RStudio 实例Jupyter Notebook 实例。我可以创建这些实例,但安装的卷似乎不是“持久的”。

下面是我的文件夹的树结构:

.
├── Docker
│   ├── docker-compose.yml
│   └── Dockerfile
└── R_and_Jupyter_scripts
    └── files_already_there.txt

我想要:

1) files_already_there.txt 在我的 RStudio 和 Jupyter Notebook 实例中可用。

2) 从两个实例之一创建的任何新文件/脚本都会出现在具有读/写权限的 R_and_Jupyter_scripts 文件夹中。 :我从 RStudio 实例创建了一个文本文件 "output.txt",但是当我检查路径时,这里是保存文件的位置:

sudo find / -name "output.txt"
/var/lib/docker/overlay2/821d3d087948309e3c489af29a5263e53e5f72627e903b4285a9597214412840/diff/home/maxence/output.txt
/var/lib/docker/overlay2/821d3d087948309e3c489af29a5263e53e5f72627e903b4285a9597214412840/merged/home/maxence/output.txt

下面是我当前的 docker-compose.yml,你能找出问题所在吗?

version: "3.5"
services:
  rstudio:
    environment:
      - USER=maxence
      - PASSWORD=password
    image: "rocker/tidyverse:latest"
    build:
     context: ./
     dockerfile: Dockerfile
    volumes:
      - /home/ec2-user/R_and_Jupyter_scripts:/var/lib/docker/
    container_name: rstudio
    ports:
     - 8787:8787

  jupyter:
    image: 'jupyter/datascience-notebook:latest'
    ports:
     - 8888:8888
    volumes:
      - /home/ec2-user/R_and_Jupyter_scripts:/var/lib/docker/
    container_name: jupyter

非常感谢。

【问题讨论】:

    标签: r docker jupyter-notebook rstudio volume


    【解决方案1】:

    我没有你的 Dockerfile,而且看起来你正在运行一个 Amazon 实例,所以我不能肯定地重现这个,但是如果我删除 Dockerfile 部分并进行一些其他编辑,我可以做一些可以工作的东西我的 Ubuntu 18 机器。

    version: "3.5"
    services:
      rstudio:
        environment:
          - USER=maxence
          - PASSWORD=password
        image: "rocker/tidyverse:latest"
        volumes:
          - /tmp/R_and_Jupyter_scripts:/home/maxence/R_and_Jupyter_scripts
        container_name: rstudio
        ports:
          - 8787:8787
    
      jupyter:
        image: 'jupyter/datascience-notebook:latest'
        ports:
          - 8888:8888
        volumes:
          - /tmp/R_and_Jupyter_scripts:/home/jovyan/R_and_Jupyter_scripts
        working_dir: /home/jovyan/R_and_Jupyter_scripts
        container_name: jupyter
    

    我使用/tmp/R_and_Jupyter_scripts 作为容器外的位置。

    在 Rstudio 中,创建了 /home/maxence,因为它对应于指定的 USER,这将是您登录时显示的位置。然后我在 volume 指令中简单地在此下方创建了一个目录成为容器外文件的位置。当您登录 Rstudio 时,您会看到一个名为 R_and_Jupyter_scripts 的文件夹,您可以输入并创建您喜欢的任何内容(我认为 working_dir 会起作用,但它似乎总是从主文件夹开始)

    在您使用的 Jupyter 映像中,默认用户是 jovyan,因此将自动创建一个文件夹 /home/jovyan。然后我在volumeworking_dir 指令中使用它。 Jupyter 容器将在您登录时使用此 working_dir

    我对它进行了测试,并且在所有 3 个地方都可以读写。

    使用/var/lib/docker 将在每个容器内正确创建一个卷,问题是任何一个客户端都无法为其设置位置。

    【讨论】:

    • 非常感谢安德鲁!我将tmp 文件夹更改为我的ec2-user 文件夹中的一个文件夹,它工作得非常好:)
    猜你喜欢
    • 1970-01-01
    • 2021-12-28
    • 2020-05-17
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多