Docker容器写入权限
我有一些docker集装箱在我的机器上运行,其中之一是container_1
我可以使用访问container_1
的cli
ant@ant~/D/m/l/db> docker exec -it container_1 bash daemon@1997cc093b24:/$
这允许我去container_1
的cli,但没有写权限。 以下命令给予权限被拒绝的错误
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
还尝试使用 – --previleged
选项,但问题仍然存在
ant@ant~/D/m/l/db> docker --previleged=true exec -it container_1 touch test.txt bash: test.txt: Permission denied
所以我有两个问题
- Docker中的权限如何工作?
- 是否对docker文件系统进行了这种修改? 如果不是为什么?
我最近开始使用docker。 请处理这个问题。 提前致谢 :)
Docker以Linux用户的身份运行命令,该用户绑定到linux文件系统权限。 所以这个问题的答案取决于:
-
你正在运行的命令为(默认为root,但可以在Dockerfile,Docker
docker run
cli或docker-compose.yml文件中使用USER
命令在你的映像中重写)。 -
自从使用相对path以来,命令运行的位置。 这将默认为
/
,但可以通过以各种方式更改工作目录来重写,通常使用Dockerfile中的WORKDIR
。 -
该位置的目录和文件权限。
在容器中使用ls -al
来查看当前的权限。 使用id
来查看当前的uid。 用docker exec
你可以通过一个标志来改变当前用户。 而要更改权限,可以使用chmod
自己更改权限, chown
更改用户所有权, chgrp
更改组所有权。 例如:
docker exec -u root container_1 chmod 777 .
该命令将允许任何用户通过以root用户身份运行来读取或写入容器内的当前文件夹。
这假定您没有启用SE Linux或AppArmor的其他安全性。