我使用以下命令运行容器:
docker run -it -v /home/:/usr/ ubuntu64 /bin/bash
然后我在容器中运行一个程序,程序在文件夹中生成一些文件:/ usr /也出现在/ home /但是我无法访问生成的文件并出现错误:容器外的权限被拒绝。
我认为这可能是因为root在容器中生成的文件但在容器外部,用户没有root权限,但如何解决呢?我想要做的是访问容器外部程序(安装在容器中)生成的文件。
答案 0 :(得分:1)
您需要使用-u
标志
docker run -it -v $PWD:/data -w /data alpine touch nouser.txt
docker run -u `id -u` -it -v $PWD:/data -w /data alpine touch onlyuser.txt
docker run -u `id -u`:`id -g` -it -v $PWD:/data -w /data alpine touch usergroup.txt
现在,如果您在主机系统上执行ls -alh
$ ls -alh
total 8.0K
drwxrwxr-x 2 vagrant vagrant 4.0K Sep 9 05:22 .
drwxrwxr-x 30 vagrant vagrant 4.0K Sep 9 05:19 ..
-rw-r--r-- 1 root root 0 Sep 9 05:21 nouser.txt
-rw-r--r-- 1 vagrant root 0 Sep 9 05:21 onlyuser.txt
-rw-r--r-- 1 vagrant vagrant 0 Sep 9 05:22 usergroup.txt