初学docker,打算搭建一个docker 应用栈。 基本技术是在一台主机上,运行多个docker 镜像,并完成多个docker之间的一些协作等功能。多个主机的功能我会以后再写。因为一个真正的分布式架构集群还需要处理容器的跨主机通信问题。
功能
我们将搭建一个包含6个节点的docker应用栈,其中包括一个代理节点、两个WEB的应用节点、一个主数据库节点及两个从数据库节点:
操作
获取应用栈各节点所需镜像
sudo docker pull ubuntu
sudo docer pull django
sudo docker pull haproxy
sudo docker pull redis
sudo docker images
应用栈容器节点互联
这里采用docer run命令的--link选项建立容器间的互联关系
- 格式:name:alias
- 目标
- 启动redis-master容器节点
- 连接两个redis-slave到redis-master上
- 连接两个APP到redis-master上
- HAProxy连接到两个APP上
- alias为别名,即link的名字,因为 image 不用知道其他container的名字, 只用在run的时候把名字映射为自己了解的就可以了
应用栈节点启动
sudo docker run -it --name redis-master redis /bin/bash
sudo docker run -it --name redis-slave1 --link redis-master:master redis /bin/bash
sudo docker run -it --name redis slave2 --link redis-master:master redis /bin/bash
sudo docker run -it APP1 --link redis-master:db -v ~/Projects/Django/App1:/usr/src/app django /bin/bash
sudo docker run -it APP2 --link redis:master:db -v ~/Projects/Django/App2:/usr/src/app django /bin/bash
sudo docker run -it --name HAProxy --link APP1:APP1 --link APP2:APP2 -p 6301:6301 -v ~Projects/HAProxy:/tmp haproxy /bin/bash