在 Docker 容器内映射 RBD 设备
shan

人们在使用容器时遇到了映射 RBD 设备的问题。快速提示,如何将 Rados 块设备映射到容器中
启动一个 Ceph 演示容器
$ docker run -d \
--net=host \
-v /var/lib/ceph:/var/lib/ceph \
-v /etc/ceph:/etc/ceph \
-e MON_IP=192.168.0.1 \
-e CEPH_NETWORK=192.168.0.0/24 \
ceph/demo
启用内核模块并创建镜像
$ sudo modprobe rbd
$ sudo rbd create foo -s 1024
然后启动一个容器,映射容器并在其上放置文件系统
$ sudo docker run -ti -v /dev:/dev -v /sys:/sys --net=host --privileged=true -v /etc/ceph:/etc/ceph ceph/base bash
root@atomic1:/# rbd map foo
/dev/rbd0
root@atomic1:/# rbd showmapped
id pool image snap device
0 rbd foo - /dev/rbd0
root@atomic1:/# mkfs.ext4 /dev/rbd0
...
...
root@atomic1:/# mount /dev/rbd0 /mnt/
root@atomic1:/# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/dm-5 10G 483M 9.6G 5% /
shm 1001M 8.0K 1001M 1% /dev/shm
tmpfs 1001M 12K 1001M 1% /run
tmpfs 1001M 0 1001M 0% /tmp
devtmpfs 986M 0 986M 0% /dev
tmpfs 1001M 8.0K 1001M 1% /dev/shm
/dev/mapper/atomicos-root 11G 1.9G 9.1G 18% /etc/ceph
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
/dev/rbd0 976M 1.3M 908M 1% /mnt
完成了!