《容器与容器云》学习--搭建第一个Docker应用栈

docker的设计理念是希望用户能够保证一个容器只运行一个进程,即只提供一种服务。然而对于用户而言,大多数时候单一容器是无法满足需求的;通常来说,需要利用多个容器,分别提供不同的服务,并在不同的容器间互连通信,以形成一个docker集群,来完成特定的功能需求。

应用栈结构

在这里插入图片描述
HAproxy是负载均衡代理节点;redis的非关系型数据库,这里由一个主数据库节点和两个从数据库节点组成;APP1和APP2是应用节点,本例中是使用python语言和Django架构设计的访问数据库的基础Web应用。

获取应用栈中各节点所需镜像

sudo docker pull django
sudo docker pull haproxy
sudo docker pull redis

各容器节点启动

注意节点的启动顺序为:
redis-master -> redis-slave -> APP -> HAProxy

# 启动redis容器
# --link选项能够进行容器间安全的交互通信,使用格式是name:alias(名字:别名),该参数可多次使用
# 来表示启动的当前容器要连接到哪个容器上
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

# 启动django容器,~/Projects/Django/App1
# -v 参数用作目录挂载 宿主机目录(若不存在则自动创建):容器目录
sudo docker run -it --name APP1 --link redis-master:db -v ~/Projects/Django/App1:/usr/src/app django /bin/bash
sudo docker run -it --name APP2 --link redis-master:db -v ~/Projects/Django/App2:/usr/src/app django /bin/bash

# 启动haproxy容器
sudo docker run -it --name HAProxy --link APP1:APP1 --link APP2:APP2 -p 6301:6301 -v ~/Projects/HAProxy:/tmp haproxy /bin/bash

查看容器启动情况(一个代理容器,两个应用容器,三个数据库容器)
在这里插入图片描述

各节点配置

主数据库节点配置

redis-master主数据库容器节点配置
先查看容器所挂载volume的情况

docker inspect --format "{
   {.Mounts}}" [CONTAINER ID]

有如下样例输出:
在这里插入图片描述
可得知容器redis-master挂载在宿主机/var/lib/docker/volumes/7a50ae084ffe07409b5a3f4a97c097c87b9c1ba58c6ff4c8dcde961304d5c057/_data目录下,容器中的目录是/data
使用docker inspect [container id]可查看容器的详细信息

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值