Ceph是一个高度可扩展的分布式存储系统,提供对象存储、块存储和文件系统存储功能。使用Docker部署Ceph可以简化部署过程并提高可移植性。
Ceph官方提供了Docker镜像,可以用于部署各个Ceph组件:
# 拉取Ceph镜像
docker pull ceph/daemon:latest-octopus # 或选择其他版本
对于测试或开发环境,可以使用单节点部署:
# 创建Ceph配置目录
mkdir -p /etc/ceph
# 启动MON容器
docker run -d --net=host \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
-e MON_IP=YOUR_HOST_IP \
-e CEPH_PUBLIC_NETWORK=YOUR_NETWORK_CIDR \
ceph/daemon:latest-octopus mon
# 启动OSD容器(需要准备数据目录)
mkdir /var/lib/ceph/osd
docker run -d --net=host \
--privileged=true \
--pid=host \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
-v /dev/:/dev/ \
-e OSD_TYPE=disk \
-e OSD_DEVICE=/dev/YOUR_DEVICE \
ceph/daemon:latest-octopus osd
对于生产环境,建议使用编排工具如Docker Compose或Kubernetes:
version: '3'
services:
mon0:
image: ceph/daemon:latest-octopus
command: mon
environment:
- MON_IP=10.0.0.1
- CEPH_PUBLIC_NETWORK=10.0.0.0/24
volumes:
- /etc/ceph:/etc/ceph
- /var/lib/ceph/mon0:/var/lib/ceph/
network_mode: host
mon1:
image: ceph/daemon:latest-octopus
command: mon
environment:
- MON_IP=10.0.0.2
- CEPH_PUBLIC_NETWORK=10.0.0.0/24
volumes:
- /etc/ceph:/etc/ceph
- /var/lib/ceph/mon1:/var/lib/ceph/
network_mode: host
mon2:
image: ceph/daemon:latest-octopus
command: mon
environment:
- MON_IP=10.0.0.3
- CEPH_PUBLIC_NETWORK=10.0.0.0/24
volumes:
- /etc/ceph:/etc/ceph
- /var/lib/ceph/mon2:/var/lib/ceph/
network_mode: host
osd0:
image: ceph/daemon:latest-octopus
command: osd
environment:
- OSD_TYPE=disk
- OSD_DEVICE=/dev/sdb
volumes:
- /etc/ceph:/etc/ceph
- /var/lib/ceph/osd0:/var/lib/ceph/
- /dev/:/dev/
privileged: true
pid: host
network_mode: host
创建存储池示例:
docker exec <mon-container> ceph osd pool create mypool 128 128
docker exec <mon-container> ceph osd pool set mypool size 3
RBD块存储:
# 创建块设备
docker exec <mon-container> rbd create myimage --size 1024 --pool mypool
CephFS文件存储:
# 创建文件系统
docker exec <mon-container> ceph fs new myfs metadata_pool data_pool
RGW对象存储:
# 启动RGW容器
docker run -d --net=host \
-v /etc/ceph:/etc/ceph \
-v /var/lib/ceph/:/var/lib/ceph/ \
ceph/daemon:latest-octopus rgw
数据持久化:
/etc/ceph
和/var/lib/ceph
挂载到宿主机性能优化:
监控:
安全性:
时钟同步问题:
空间不足:
noout
标志防止OSD自动踢出网络问题:
容器重启问题: