云计算 docker实验系列

作者简介:鸿哥,硕士研究生,国内某通信设备公司软件研发工程师,主要从事云计算、SDN技术开发

1、 docker简介
docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、Bare metal、OpenStack 集群和其他的基础应用平台。

2、 docker常用命令解析

3、 docker实战-需要实现的架构
本文重点讲解如何使用 docker来搭建应用平台,在一台linux服务器上搭建如下结构的应用,其中包括一个HAProxy代理服务器(容器),目的是保证APP(Django)的高可用性,2个Django应用容器,3个Redis内存数据库容器。HAProxy将用户请求转发至另一台Django容器,由Django容器进行逻辑处理,并通过Redis(master)获取内存数据库数据,而Redis(master)与Redis(slave)进行数据同步。

4、实现步骤
1)搭建 docker应用环境
安装 docker软件

启动 docker服务

测试下是否可以使用

输出

意思是 docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果,同时 docker首先从本地主机上查找镜像是否存在,如果不存在, docker 就会从镜像仓库 docker Hub 下载公共镜像。

2)获取应用栈各节点所需要的镜像
docker从 docker hub上获取HAProxy、redis、以及Django的镜像。

3)配置好各个容器之间的网络通信,由于这里是所有容器都在同一个服务器上,因此可以忽略各个主机之间的连接,只需要配置好各个容器之间的连接即可。使用--link参数能够进行容器间的安全通信,使用格式为name:alias,例如:

表示将在ubuntu镜像上启动一个容器,并启动该容器的bash,同时命名为console,同时将新启动的console容器连接到名为redis容器上。因此应用栈启动命令如下:

4)节点内部的配置
配置redis主数据库的redis配置,由于容器的轻量化设计,在容器里面缺乏相应的文本编辑工具,所有借用volume来实现文件的编辑。

可以看到在主机/var/lib/ docker/volumes/42a5213973bb5365db0e040515f48c63cdd5514473285723cd6c5ab36eae4967/_data映射到了容器的/data目录,因此进入主机的/var/lib/ docker/volumes/42a5213973bb5365db0e040515f48c63cdd5514473285723cd6c5ab36eae4967/_data目录,创建redis.conf文件,在网上找了该文件的内容,填入redis.conf然后修改以下几个参数
daemonize yes
pidfile /var/run/redis.pid
在容器中可以看到该文件,然后将该文件复制到运行环境
cp redis.conf /usr/local/bin/
cd /usr/local/bin/
./redis-server redis.conf
同理在redis slave上也是类似配置,最后在redis slave上的redis.conf
修改参数为
daemonize yes
pidfile /var/run/redis.pid
slaveof master 6379
最后都执行
./redis-server redis.conf
测试是否配置成功,

4)APP容器节点Django的配置
安装python的redis支持包,

在容器中创建app

helloworld manage.py redisweb
切换至主机的/home/ubuntu/Projects/Django/App1可以看到刚刚创建的那些文件

切换至root用户

然后修改redisweb项目的配置文件setting.py,将helloworld添加进去。

最后修改redisweb的urls.py,将其设置为访问应用url模式
vi urls.py 内容如下

主机下修改好了之后需要在容器里面执行以下:

APP2也是类似的配置。
最后一步,启动APP1

项目在以下地址:

https://pan.baidu.com/s/11hwF2qMzSZ_EyZenF7mtpg

密码:xuut

5)HAProxy容器节点配置
利用HAProxy进行负载均衡,在主机中,进入HAProxy目录。
vi haproxy.cfg 内容如下:

然后进入容器中,在/tmp目录下将haproxy.cfg复制到/usr/local/sbin/
cd /tmp/
ls
haproxy.cfg
cp haproxy.cfg /usr/local/sbin/
cd /usr/local/sbin/
ls
haproxy haproxy.cfg
利用该配置文件启动haproxy
./haproxy -f haproxy.cfg
此时可以通过以下链接进行测试

http://172.17.0.7:6301/helloworld

5、总结
通过搭建6个docker容器节点来实验HAProxy、Django、redis组成的服务,本例中采用web返回最简单的Helloworld来模拟常用的web应用,实际部署当中可以将Django换成Tomcat等java应用服务器,并且可以添加关系型数据库来持久化用户数据。从实验可以看出,实验 docker容器搭建起来非常方便灵活,占用资源少等特点。


  • 本站原创文章仅代表作者观点,不代表SDNLAB立场。所有原创内容版权均属SDNLAB,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用,转载须注明来自 SDNLAB并附上本文链接。 本站中所有编译类文章仅用于学习和交流目的,编译工作遵照 CC 协议,如果有侵犯到您权益的地方,请及时联系我们。
  • 本文链接https://www.sdnlab.com/20883.html
分享到:
相关文章
条评论

登录后才可以评论

wellbeing 发表于18-06-01
1