Docker 中的 Ceph 开发环境

loic

使用 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。