搭建基于Docker的MongoDB复制集群环境(一)

2015-07-20 12:04:35 · 作者: · 浏览: 19

一步一步教你搭建基于Docker的MongoDB复制集群环境


1.安装docker
2.创建MongoDB的Image
3.搭建MongoDB的集群


Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中。


如果是其他(更早)版本的Linux参考
安装Docker使用apt-get命令:
? ? $ apt-get install docker.io
启动服务和守护进程
? ? $ service docker.io status
? ? $ service docker.io start
创建软连接:ln -sf /usr/bin/docker.io /usr/local/bin/docker
? ? 如没有提示错误则说明你已经在Ubuntu14.04上面快速安装Docker成功了。


卸载Uninstallation
? ? $ sudo apt-get purge lxc-docker
To uninstall the Docker package and dependencies that are no longer needed:
? ? $ sudo apt-get autoremove --purge lxc-docker


2.创建MongoDB的Image
linuxidc@linuxidc:~$ docker pull ubuntu:14.04
linuxidc@linuxidc:~$ sudo docker images
REPOSITORY? ? ? ? ? TAG? ? ? ? ? ? ? ? IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? VIRTUAL SIZE
ubuntu? ? ? ? ? ? ? 14.04? ? ? ? ? ? ? 6d4946999d4f? ? ? ? 3 weeks ago? ? ? ? 188.3 MB
linuxidc@linuxidc:~$


编写dockerfile
linuxidc@linuxidc:~$ vim Dockerfile


Dockerfile内容如下


#VERSION 0.1.0
FROM ubuntu:14.04


#Install some
RUN apt-get clean
RUN apt-get update
RUN apt-get install -y g++
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd


#open port 22
EXPOSE 22
#CMD ["/usr/sbin/sshd", "-D"]



RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
ENV MONGO_MAJOR 3.0
RUN echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/$MONGO_MAJOR main" > /etc/apt/sources.list.d/mongodb-org.list
# Install MongoDB
RUN apt-get update
RUN sudo apt-get install -y mongodb-org=3.0.4 mongodb-org-server=3.0.4 mongodb-org-shell=3.0.4 mongodb-org-mongos=3.0.4 mongodb-org-tools=3.0.4


# Create the MongoDB data directory
RUN mkdir -p /data/db


#open port 27017
EXPOSE 27017
ENTRYPOINT ["usr/bin/mongod"]


写好了Dockerfile 就可以生成带有mongodb的image :后面是flag .表示当前路径的Dockerfile
linuxidc@linuxidc:~$ sudo docker build -t pc/mongos:master .


再次查看一下docker image
linuxidc@linuxidc:~$ sudo docker images
REPOSITORY? ? ? ? ? TAG? ? ? ? ? ? ? ? IMAGE ID? ? ? ? ? ? CREATED? ? ? ? ? ? VIRTUAL SIZE
pc/mongod? ? ? ? ? master? ? ? ? ? ? ? 6fcc1b62e091? ? ? ? 54 minutes ago? ? ? 542 MB
ubuntu? ? ? ? ? ? ? 14.04? ? ? ? ? ? ? 6d4946999d4f? ? ? ? 4 weeks ago? ? ? ? 188.3 MB


3.搭建MongoDB的集群
下面我们就启动3个基于mongod:master的container


linuxidc@linuxidc:~$ sudo docker run --name rs_server1 -p 21117:27017 -d pc/mongod:master --noprealloc --smallfiles --replSet rs1
操作成功之后返回的就是容器的id
6306bf3057f8ebca79d7bd130ba35e260da7177925a85a1c9a3d5d21c551e0aa


后面两个容器同理
linuxidc@linuxidc:~$ sudo docker run --name rs_server2 -p 22117:27017 -d pc/mongod:master --noprealloc --smallfiles --replSet rs1
b60c977313e1b6143c0346e1c6138c3ad4831818f6349fc98181fa76edbd2eff
linuxidc@linuxidc:~$ sudo docker run --name rs_server3 -p 23117:27017 -d pc/mongod:master --noprealloc --smallfiles --replSet rs1
cebebc142a1bfed7162a06441ad841f4173c3f71c97f3dded8d5c3833ea9fa78


选择一个容器执行一下ifconfig 查看ip 一般都是同网段中递增的
linuxidc@linuxidc:~$ sudo docker exec 6306bf3057f8ebca79d7bd130ba35e260da7177925a85a1c9a3d5d21c551e0aa ifconfig
eth0? ? ? Link encap:Ethernet? HWaddr 02:42:ac:11:00:01?
? ? ? ? ? inet addr:172.17.0.1? Bcast:0.0.0.0? Mask:255.255.0.0
? ? ? ? ? inet6 addr: fe80::42:acff:fe11:1/64 Scope:Link
? ? ? ? ? UP BROADCAST RUNNING? MTU:1500? Metric:1
? ? ? ? ? RX packets:26 errors:0 dropped:0 overruns:0 frame:0
? ? ? ? ? TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
? ? ? ? ? collisions:0 txqueuelen:0
? ? ? ? ? RX bytes:2124 (2.1 KB)? TX bytes:828 (828.0 B)


lo? ? ? ? Link encap:Local Loopback?
? ? ? ? ? inet addr:127.0.0.1? Mask:255.0.0.0
? ? ? ? ? i