当我设置 Ubuntu 20.04 时,我选择同时安装 Docker。除了创建一个docker
组并将我的用户添加到其中之外,我没有对其设置进行任何更改(即我相信 Docker 以 root 身份运行)。
我的容器将其数据存储在 中/home/docker
。为了能够通过 FTP 进入文件夹并添加/编辑一些文件,我将所有子文件夹的所有权更改为myuser:myuser
。结果,今天早上 SQL 无法正常运行。我最终认为我应该将所有权恢复为root:root
,这样我就可以使用 phpMyAdmin 查看所有数据库和表。
但是,当我尝试使用 DBeaver 进行连接时,我不断收到如下错误:
无法读取 './database1/' 的目录(errno:13“权限被拒绝”)
有人能告诉我设置 docker 文件夹权限的最佳方法吗,以及为了让所有容器正常运行并且我能够 FTP 和编辑文件,我应该更改哪些其他设置。
谢谢你!
答案1
容器需要容器中使用的用户拥有目录的所有权。这取决于镜像,每个创建者都可以选择他想在容器中使用的用户,因为容器是隔离的。
运行时,docker inspect containername
您可以在配置中找到它:
"Config": {
"User": "1001:1002",
在这种情况下,容器中的应用程序与用户 1001 和组 1002 一起运行。为此,您需要chown 1001:1002
在作为卷挂载到容器中的文件夹上运行。
如果值为User
空,则以 root 身份运行。在这种情况下,权限无关紧要。