- 操作系统内核:
uname -r
- docker 版本
docker version
一、应用栈搭建
1.1、说明
- 本实验将搭建一个一个包含6个节点的Docker应用栈,其中包括一个代理节点(HAProxy,负载均衡代理节点)、两个web应用节点(APP1、APP2,使用python语言设计的一个单表数据库)、一个主数据库节点(Master-Redis)以及两个从数据库节点(Slave-Redis),结构图如下 :
由图可知,后面的应用栈容器节点启动顺序为redis-master -》redis slave -》APP -》HAProxy
1.2、获取所需镜像(根据应用栈结构需要从Docker Hub获取HAProxy、Redis、Django的镜像)
docker pull ubuntu:14.04
docker pull haproxy
docker pull redis
docker pull django
- 一切安装就绪。。。。。
sudo docker images
1.3、启动各个栈节点
- 启动redis-Master容器节点
- 两个redis-Slave容器节点启动时链接到redis-master
- 两个APP容器节点启动时链接到redis-master
- HAProxy容器节点启动时链接到两个APP节点
- 说明:为了能够从外网访问应用栈,并通过HAProxy节点访问应用栈中的APP,启动HAProxy节点时必须使用 -p参数将端口暴露给主机
1.3.1、启动Redis容器(创建容器)
docker run -it --name redis-master redis /bin/bash
docker run -it --name redis-slave1 --link redis-master:master redis /bin/bash
docker run -it --name redis-slave2 --link redis-master:master redis /bin/bash
- 说明:启动之后不要exit退出,使用ctrl+p,ctrl+q退出,(容器不关闭)
- 查看已启动的容器
docker ps
1.3.2、启动Gjango容器
docker run -it --name APP1 --link redis-master:db -v ~/Projects/Django/APP1:/usr/src/app django /bin/bash
docker run -it --name APP2 --link redis-master:db -v ~/Projects/Django/APP2:/usr/src/app django /bin/bash
1.3.3、启动HAProxy容器
docker run -it --name HAProxy --link APP1:APP1 --link APP2:APP2 -p 6301:6301 -v ~/Projects/HAProxy:/tmp haproxy /bin/bash
- 每个容器启动时都分配了一个终端,在 /bin/bash下
- 所有容器信息如下:
1.4、应用栈容器节点配置
1.4.1、volume应用说明
- 在应用栈的个容器节点都启动后,需要对他们进行配置和修改,以便使他们实现特定功能和通信协作,在linux系统下,可以利用volume来实现文件的创建(利用-v 参数挂载volume,在主机和容器间共享数据,这样就可以直接在主机上创建和编辑相关启动配置文