考虑以下 Docker 容器:
docker run --rm -it -v /tmp:/mnt/tmp alpine sh
Run Code Online (Sandbox Code Playgroud)
这会将主机目录 /tmp 挂载到 alpine 容器内的 /mnt/tmp 中。
现在,在主机系统上,我将 NFS 卷挂载到 /tmp 目录:
mkdir /tmp/nfs
mount -t nfs4 192.168.1.100:/data /tmp/nfs
Run Code Online (Sandbox Code Playgroud)
挂载在主机系统上工作,我看到以下内容:
# ls /tmp/nfs
file1 file2 file3
#
Run Code Online (Sandbox Code Playgroud)
但是在 Docker Container 上,我看到一个空白目录:
# ls /mnt/tmp/nfs
#
Run Code Online (Sandbox Code Playgroud)
我知道我可以通过直接在 Docker 容器中进行挂载来解决这个问题。但是我真的很想知道为什么挂载在主机容器上有效,而在 docker 容器中无效?