我想给我的学生一个码头工人容器,以便他们能够进行实验。我以为我使用以下dockerfile:
FROM jupyter/datascience-notebook:latest
ADD ./config.json /home/jovyan/.jupyter/jupyter_notebook_config.json
ADD ./books /home/jovyan/work
因此,标准容器将包含我创建并存储在books文件夹中的一些笔记本。然后,我使用
在本地构建和运行此容器#!/usr/bin/env bash
docker build -t aaa .
docker run --rm -p "8888:8888" -v $(pwd)/books:/home/joyvan/work aaa
我构建容器aaa并再次与它共享文件夹书籍(虽然书籍已经在编译时被复制到图像中)。我现在在端口8888上打开容器。我可以编辑/ home / joyvan / work文件夹中的文件,但这些东西不会被传回主机。有些事情发生了可怕的错误。是因为我在docker build期间添加了文件,然后在-v ...中再次共享它们?
我玩过各种各样的选择。我已将本地用户添加到用户组。我对书中的所有文件都有所了解。我的所有文件都显示为root:root在容器中。然后我在容器中的joyvan,并没有这些文件的写入权限。我如何确保文件归joyvan所有?
修改
其他一些要素:
tom@thomas-ThinkPad-T450s:~/babynames$ docker exec -it cranky_poincare /bin/bash
jovyan@5607ac2bcaae:~$ id
jovyan uid=1000(jovyan) gid=100(users) groups=100(users)
jovyan@5607ac2bcaae:~$ cd work/
jovyan@5607ac2bcaae:~/work$ ls
test.txt text2.txt
jovyan@5607ac2bcaae:~/work$ ls -ltr
total 4
-rw-rw-r-- 1 root root 5 Dec 12 19:05 test.txt
-rw-rw-r-- 1 root root 0 Dec 12 19:22 text2.txt
在主持人身上:
tom@thomas-ThinkPad-T450s:~/babynames/books$ ls -ltr
total 4
-rw-rw-r-- 1 tom users 5 Dez 12 20:05 test.txt
-rw-rw-r-- 1 tom users 0 Dez 12 20:22 text2.txt
tom@thomas-ThinkPad-T450s:~/babynames/books$ id tom
uid=1001(tom) gid=1001(tom) groups=1001(tom),27(sudo),100(users),129(docker)
答案 0 :(得分:0)
您可以尝试:
FROM jupyter/datascience-notebook:latest
ADD ./config.json /home/jovyan/.jupyter/jupyter_notebook_config.json
ADD ./books /home/jovyan/work
RUN chown joyvan /books
如果该用户已存在,但使用RUN可以执行docker文件中的所有命令。