我有一个具有以下属性的NFS共享:
- 在我的主机上挂载到路径
/nfs/external_disk
- 拥有者用户是
test_user
,其UID
为1234
- 组是
test_group
,其GID
为2222
- 权限为
750
我有一个小的Dockerfile文件,其中包含以下内容
ARG tag=lts
from jenkins/jenkins:${tag}
user root
# Create a new user and new group that matches what is on the host.
ARG username=test_user
ARG groupname=test_group
ARG uid=1234
ARG gid=2222
RUN groupadd -g ${gid} ${groupname} && \
mkdir -p /users && \
useradd -l -m -u ${uid} -g ${groupname} -s /bin/bash -d /users/${username} ${username}
user ${username}
构建镜像后(名称为 custom_jenkins),运行以下命令,容器将被正确启动,并且可以看到原始的 Jenkins 主目录现在已经复制到了共享目录中。 ``` docker run -td --rm -v /nfs/external_disk:/var/jenkins_home custom_jenkins ```
但是,如果要挂载 NFS 共享的子目录,比如 `${NFS_SHARE}/jenkins_home`,就会出现错误: ``` docker run -td --rm -v /nfs/external_disk/jenkins_home:/var/jenkins_home custom_jenkins ```
错误信息如下: ``` docker: Error response from daemon: error while creating mount source path '/nfs/external_disk/jenkins_home': mkdir /nfs/external_disk/jenkins_home: permission denied. ```
即使我提前创建了这个子目录并将其权限设置为 777,也无济于事。请注意,我正在以具有与容器中相同 UID/GID 的 test_user 身份运行,实际上它拥有 NFS 共享。
我感觉当 Docker 尝试创建一个子目录时,它会尝试将其创建为某个不同的用户(例如“docker”用户),这会导致在共享内部无法访问而创建文件夹失败。
请问有人能提供帮助吗?非常感谢。