Docker 中的 Ceph 开发环境
使用 Docker 包安装
sudo apt-get install docker.io
并且将 loic 用户添加到 docker 组,以允许其运行容器。
$ grep docker /etc/group docker:x:142:loic
由 ubuntu 报告的最流行的镜像集合是
$ docker search ubuntu | head -2 NAME DESCRIPTION STARS ... ubuntu Official Ubuntu base image 715 ...
使用 docker pull ubuntu 命令将其拉取到本地
docker pull ubuntu
使用 docker images 找到的所需镜像创建容器,并使用以下命令选择:
docker run -v /home/loic:/home/loic -t -i ubuntu:14.04
将主目录挂载到容器中,因为它包含用于开发的本地 Ceph 克隆。使用以下命令在容器中重新创建 loic 用户:
adduser loic
并使用以下命令安装必要的开发包:
apt-get build-dep ceph apt-get install libudev-dev git-core python-virtualenv emacs24-nox ccache
使用以下命令保存容器的状态以供重用:
$ docker ps CONTAINER ID IMAGE ... 2c694d6d5f90 ubuntu:14.04 ... $ docker commit 2c694d6d5f90 ubuntu-14.04-ceph-devel
然后使用以下命令在本地编译和测试 Ceph:
cd ~/software/ceph/ceph ./autogen.sh ./configure --disable-static --with-debug \ CC='ccache gcc' CFLAGS="-Wall -g" \ CXX='ccache g++' CXXFLAGS="-Wall -g" make -j4 make check
如果 /var/lib/docker 中没有足够的空间,可以使用以下命令将其移动:
$ grep ^DOCKER_OPTS /etc/default/docker DOCKER_OPTS="-g=/home/docker" $ restart docker
devicemapper 存储后端是 首选的。
$ grep ^DOCKER_OPTS /etc/default/docker DOCKER_OPTS="-g=/home/docker --storage-driver=devicemapper" $ restart docker
默认情况下,它使用文件,但 Yann Dupont 发现它也可以映射到块设备,使用以下命令:
--storage-opt dm.metadatadev=/dev/dm-26 --storage-opt dm.datadev=/dev/dm-27 --storage-opt dm.fs=xfs
以节省 I/O。