如何运行官方mongodbdocker存储数据分离主机系统驱动器?
我想运行官方的mongodb docker,同时将数据存储到一个单独的主机系统驱动器上,在redhat linux上将XFS文件系统挂载为/data
。 我想通过
docker run --name mongodb -p 27017:27017 -v /data:/data/db -d mongo --master --storageEngine wiredTiger
我的理解是,这应该创build一个新的卷,将主机系统的/data
作为/data/db
挂载到docker容器中,从而将对/data/db
的所有访问redirect到主机/data
。
进行docker inspect --type=container ce03...73
显示
"Mounts": [ { Source: "/data", Destination: "/data/db", Mode: "", RW: true }, ...
但是,在执行df
显示/dev/xvda1
挂载为/
是唯一的fs增长,而挂载为/data
/dev/xvdb
保留为空。 du /data
和ls -a /data
都certificate了这一点。 现在,如果我做sudo du -L / | grep -E "^[0-9]{6,20}"
sudo du -L / | grep -E "^[0-9]{6,20}"
这显示了我的系统上的所有相关字节大小的目录。 其中唯一增长的是/proc/3071/task/3071/*
。 做top -p 3071
显示mongod
。 因此,而不是保存任何东西/data
mongod
已经创build了一个虚拟卷,并在那里存储数据。 做sudo du -L / | grep -E "^[0-9]{6,20}"
sudo du -L / | grep -E "^[0-9]{6,20}"
容器内部确认只有/data/db
正在增长。 然而,在容器内部做lsblk
并没有显示任何东西会被挂载为/data/db
,只有两个docker循环显示为挂载为/
。 因此/data/db
只是/
docker映像上的普通目录。
为什么? 我怎样才能让它存储数据/data
?