我希望在将数据存储到单独的主机系统驱动器时运行official mongodb docker,并在Redhat linux上将{XFS文件系统挂载为/data
。我希望通过
docker run --name mongodb -p 27017:27017 -v /data:/data/db -d mongo --master --storageEngine wiredTiger
我的理解是,这应该创建一个新的卷,将主机系统的/data
作为/data/db
安装在docker容器中,从而将对/data/db
的所有访问权限重定向到主持人/data
。
执行docker inspect --type=container ce03...73
节目
"Mounts": [
{
Source: "/data",
Destination: "/data/db",
Mode: "",
RW: true
},
...
然而,执行df
表示/dev/xvda1
挂载为/
是唯一的fs增长,而/dev/xvdb
挂载为/data
仍为空。这由du /data
和ls -a /data
确认均未显示。
现在,如果我sudo du -L / | grep -E "^[0-9]{6,20}"
,这将显示我的系统上具有相关字节大小的所有目录。其中唯一增长的是/proc/3071/task/3071/*
。执行top -p 3071
会显示mongod
。因此,/data
不是将任何内容保存到mongod
,而是创建了一个虚拟卷并在那里存储数据。在容器内执行sudo du -L / | grep -E "^[0-9]{6,20}"
确认只有/data/db
正在增长。但是,在容器内执行lsblk
并未显示任何内容将作为/data/db
挂载,只显示两个docker循环被挂载为/
。因此/data/db
只是/
泊坞窗图片上的普通目录。
为什么呢?如何在/data
上存储数据?