18,829
社区成员




[root@host ~]# docker volume create -d local -o type=tmpfs -o device=tmpfs -o o=size=2m,uid=1000 --name my_test_volume_01
[root@host ~]# docker volume inspect my_test_volume_01
[
{
"Name": "my_test_volume_01", #这个才是你在-v里的参数
"Driver": "local",
"Mountpoint": "/opt/docker/graph/volumes/my_test_volume_01/_data", #这个是实际数据存储,你可以在宿主机里直接读取z容器里这个volume的数据,但不是你在-v里的参数
"Labels": {},
"Scope": "local"
}
]
[root@host ~]# docker run -it --rm --name test01 --hostname test01 -v my_test_volume_01:/mytest centos:7.3.1611 bash
[root@test01 /]# cd /mytest
# 尝试往里面填充数据,但最后只能写入2M。
[root@test01 /]# dd if=/dev/zero of=/mytest/my01.img bs=1M count=10
不用docker vloume实现类似这样:
[root@host ~]# mkdir /run/my_test_volume_01
[root@host ~]# mount tmpfs /run/my_test_volume_01 -t tmpfs -o rw,size=2m,uid=1000
# 再把这个文件系统用-v挂载给容器
[root@host ~]# docker run -it --rm --name test01 --hostname test01 -v /run/my_test_volume_01:/mytest centos:7.3.1611 bash
如果你在宿主机创建一个img文件,就有另外两种方式给容器使用。
[root@host ~]# dd if=/dev/zero of=/tmp/myfs.img bs=1 count=0 seek=2M
方式1.在宿主机mount img文件到一个目录,再通过-v把该目录挂载给容器
# 格式化img文件
[root@host ~]# mkfs.ext4 /tmp/myfs.img #空间只剩900K可用
# 把img文件mout到宿主机的一个目录
[root@host ~]# mount /tmp/myfs.img /run/mytest -o loop -t ext4
# 再把这个目录挂载给容器
[root@host ~]# docker run -it --rm --name test01 --hostname test01 -v /run/my_test_volume_01:/mytest centos:7.3.1611 bash
方式2.把img文件创建为loop device,通过--device让容器直接管理块设备
# 格式化img文件
[root@host ~]# mkfs.ext4 /tmp/myfs.img #空间只剩900K可用
# 把img文件通过losetup做成宿主机的一个loop块设备
[root@host ~]# losetup -v /dev/loop0 /tmp/myfs.img
# 打开容器的sys_admin权限(没有这个权限无法mount),并通过--device=/dev/loop0,把loop块设备给容器使用
[root@host ~]# docker run -it --rm --cap-add=sys_admin --name tes01 --hostname test01 --device=/dev/loop0 my/centos:7.3.1611 bash
[root@test01 /]# mkdir /mytest
[root@test01 /]# mount /dev/loop0 /mytest/
[root@test01 /]# cd /mytest
[root@test01 mytest]# df -lh
Filesystem Size Used Avail Use% Mounted on
overlay 16G 4.2G 12G 27% /
tmpfs 5.9G 0 5.9G 0% /dev
tmpfs 5.9G 0 5.9G 0% /sys/fs/cgroup
/dev/mapper/vg_root-root 16G 4.2G 12G 27% /etc/hosts
shm 64M 0 64M 0% /dev/shm
/dev/loop0 987K 947K 0 100% /mytest
-v yh-test-volume:/data