Docker:将之前在容器中创建为root的所有文件的权限更改为本地用户

  • 本文关键字:权限 文件 用户 root Docker 创建 docker
  • 更新时间 :
  • 英文 :


我已经使用docker容器几个月了,但我不知道我创建的所有内容(文件夹、文件(都是在容器的root用户下创建的。现在,我想收回所有这些文件的所有权,这样我就可以在容器外时有权移动或写入这些文件。

为了使其更加具体/清晰,我有一个名为johndoe的本地用户,以及johndoe拥有的/home/johndoe/pythoncodes路径下的本地文件夹。当我运行命令时,我将这个本地文件夹装载到我的docker容器中

docker run -v /home/johndoe/pythoncodes:/home/johndoe/pythoncodes ...

然后在容器中,我在/home/johndoe/pythoncodes/ProjectRepo创建了一个文件夹。ProjectRepo现在由容器中的root所有,因此当我离开容器并重新成为johndoe用户时,我不再有权限对此文件夹进行任何操作(例如,如果我尝试运行git init,我会收到一个权限错误,不允许创建.git文件夹。

我已经看到了关于如何创建一个容器的答案,该容器将我作为本地用户登录,并通过使用adduser标志使其正常工作,但这似乎只对创建新文件有帮助,对我处理所有已创建为root的文件没有帮助。

但这似乎只对创建新文件有帮助,对我处理所有已经创建为根的文件没有帮助

您可以从docker容器中直接使用chown来更改这些绑定装载的所有权。但要做到这一点,您需要装载两个文件夹,其中包含用户的用户名和密码信息,/etc/passwd/etc/group(下面,:ro的意思是"只读"(。

$ docker run -idt -v /etc/passwd:/etc/passwd:ro -v /etc/group:/etc/group:ro --name try ubuntu:16.04 /bin/bash 
$ docker exec -it try mkdir -p /tmp/abc/newfolder
$ cd abc
$ ls -alh
total 12K
drwxr-xr-x  3 atg atg  4.0K Jul  7 16:43 .
drwxr-xr-x 60 atg atg  4.0K Jul  7 16:42 ..
drwxr-xr-x  2 root     root 4.0K Jul  7 16:43 newfolder
$ sudo chown -R atg:atg .
[sudo] password for atg:
$ ls -alh
total 12K
drwxr-xr-x  3 atg atg 4.0K Jul  7 16:43 .
drwxr-xr-x 60 atg atg 4.0K Jul  7 16:42 ..
drwxr-xr-x  2 atg atg 4.0K Jul  7 16:43 newfolder

最新更新