为Jupyter创build一个docker容器

我想给一个docker集装箱给我的学生,使他们能够进行实验。 我以为我使用以下dockerfile:

FROM jupyter/datascience-notebook:latest ADD ./config.json /home/jovyan/.jupyter/jupyter_notebook_config.json ADD ./books /home/jovyan/work 

因此,标准容器将包括我创build并存储在books文件夹中的几个笔记本。 然后我用本地生成和运行这个容器

 #!/usr/bin/env bash docker build -t aaa . docker run --rm -p "8888:8888" -v $(pwd)/books:/home/joyvan/work aaa 

我构build容器aaa,并再次与文件夹书籍共享(虽然书籍已在编译时复制到图像中)。 我现在打开端口8888上的容器。我可以编辑/ home / joyvan / work文件夹中的文件,但是这些东西没有被传回主机。 有什么地方可怕的错误。 是因为我在docker build期间添加了文件,然后在-v中再次分享它们?

我玩过各种select。 我已经将本地用户添加到用户组。 我在书中的所有文件上都播放。 我所有的文件显示为根:容器中的根。 我在容器中是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) 

你可以试试:

 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文件中执行所有的命令。