ten*_*ten 2 windows docker docker-compose docker-volume
我写了一个docker-compose.yml这样的:
version: "3"
services:
  notebook:    
    image: jupyter/datascience-notebook
    
    ports:
      - "8888:8888"
    volumes: 
      - jupyterlabPermanent:/hahaha
    environment:
      JUPYTER_ENABLE_LAB: "yes"
      TZ: "Asia/Tokyo"
    command:
      start-notebook.sh --NotebookApp.token=''
volumes:
  jupyterlabPermanent:
Run Code Online (Sandbox Code Playgroud)
让我先说清楚舞台上出现的人物有哪些。
\hahaha:位于根目录的容器端目录jupyterlabPermanenthahaha:容器端目录挂载的卷。dockerjulia_jupyterlabPermanent\_data:为卷提供安全保护的主机端目录,该目录同步位于. 的完整路径isjupyterlabPermanent中的数据。\hahahadockerjulia_jupyterlabPermanent\_data\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\dockerjulia_jupyterlabPermanent\_data当我在目录中的 bash 上使用 touch 命令时\hahaha,我得到permission denied
# bash command line at \hahaha
(base) jovyan@4bcdaa228d9e:/hahaha$ touch test.txt
touch: cannot touch 'test.txt': Permission denied
Run Code Online (Sandbox Code Playgroud)
因此,容器中完成的每个任务都无法存储在\hahaha卷  中jupyterlabPermanent,这意味着数据保存在此环境中不起作用。
我该如何解决这个问题?我搜索了一下这个,发现我需要更改权限的配置,但我不明白。
我在 Windows 10 家庭版上使用 Docker Desktop for Windows 和 WSL 2。
您需要卷上的 root 访问权限才能更改权限。让我们运行一个普通的 Ubuntu 容器并挂载该卷
docker run -it --rm -v jupyterlabPermanent:/hahaha ubuntu
Run Code Online (Sandbox Code Playgroud)
现在我们可以将组所有权更改为 GID 100,这是 jovyan 用户所属的组,并将权限更改为 775,以便组成员可以对其进行写入
chown :100 /hahaha
chmod 775 /hahaha
Run Code Online (Sandbox Code Playgroud)
现在您可以退出 Ubuntu 容器并运行 jupyter 容器,您应该能够写入该卷。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           26320 次  |  
        
|   最近记录:  |