获取本地文件系统上的docker容器生成的内容时,权限被拒绝

时间:2017-09-09 03:01:20

标签: docker

我使用以下命令运行容器:

  docker run -it -v /home/:/usr/ ubuntu64 /bin/bash

然后我在容器中运行一个程序,程序在文件夹中生成一些文件:/ usr /也出现在/ home /但是我无法访问生成的文件并出现错误:容器外的权限被拒绝。

我认为这可能是因为root在容器中生成的文件但在容器外部,用户没有root权限,但如何解决呢?

我想要做的是访问容器外部程序(安装在容器中)生成的文件。

1 个答案:

答案 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