我们通常会将宿主机的目录挂载到容器中,这样当容器被销毁时,不至于删除一些仍有用的数据文件。

在 Windows 系统安装使用 Docker 容器,挂载目录后,可以在容器里任意操作,不用担心目录权限问题。Docker 容器挂载了 Windows 目录,在容器内容可以看到,挂载的子目录权限为 777,文件的权限为 755,所有者是 root。

而 Linux 系统对权限比较敏感,在容器内很大概率会遇到没有写入权限的问题。

简单粗暴的操作,就是在宿主机把挂载目录和文件权限全部改成 777,即可解决。

另外一种解决办法,就是在宿主机和容器内使用相同名称的账号来操作目录,没有的话就要创建同名账号。且两边账号的 UID、群组的 GID 都要一致才可以。

创建账号 useradd 指令可以用 -u 参数指定 UID,创建群组 groupadd 指令可以用 -g 参数指定 GID。指令 usermod、groupmod 可以修改已存在用户的 UID 和群组的 GID。具体参见另一篇博文:https://www.yangdx.com/2020/06/157.html