Docker container write permissions

ant*_*618 1 docker

I have some docker containers running on my machine, one of them being container_1

I am able to access container_1's cli using

ant@ant~/D/m/l/db> docker exec -it container_1 bash
daemon@1997cc093b24:/$
Run Code Online (Sandbox Code Playgroud)

This allows me to go to container_1's cli but with no write permissions. The following commands give a permission denied error

ant@ant~/D/m/l/db> docker exec -it container_1 touch test.txt
bash: test.txt: Permission denied
ant@ant~/D/m/l/db>docker exec -it container_1 bash
daemon@1997cc093b24:/$ touch test.txt
bash: test.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)

Also tried using --previleged option but the problem persisted

ant@ant~/D/m/l/db> docker --previleged=true exec -it container_1 touch test.txt
bash: test.txt: Permission denied
Run Code Online (Sandbox Code Playgroud)

So I have 2 questions

  1. How do permissions in docker work?
  2. Is this kind of modification to a docker filesystem recommended? If not why?

我最近开始使用docker。请提出疑问。提前致谢 :)

BMi*_*tch 6

Docker以Linux用户身份运行命令,该用户绑定到Linux文件系统权限。因此,此问题的答案取决于:

  1. 您正在以命令方式运行的uid(默认为root,但可以在镜像文件中使用USERDockerfile,docker runcli中的命令或docker -compose.yml文件中的命令覆盖)。

  2. 由于您使用的是相对路径,因此命令运行的位置。这将默认设置为/,但可以通过以各种方式更改工作目录(通常是使用WORKDIRDockerfile中的方式)再次覆盖。

  3. 该位置的目录和文件权限。

ls -al在容器内部使用以查看当前权限。使用id查看当前的UID。有了docker exec你可以传递一个标志来改变当前用户。要更改权限,您可以使用chmod自己更改权限,chown更改用户所有权和chgrp更改组所有权。例如:

docker exec -u root container_1 chmod 777 .
Run Code Online (Sandbox Code Playgroud)

该命令将允许任何用户通过以root用户身份运行来读取或写入容器中的当前文件夹。

假设您尚未使用SE Linux或AppArmor启用任何其他安全性。