Docker应用栈

Docker应用栈

阅读《docker容器与容器云》笔记

应用栈结构视图

这里写图片描述

所需docker镜像
  • docker pull ubuntu
  • docker pull redis
  • docker pull django
  • docker haproxy

注:免sudo使用docker

  • 如果没有docker用户组,则添加一个docker用户组sudo groupadd docker
  • 将当前用户加入该 group 内。sudo gpasswd -a ${USER} docker
-link选项用法
通过`--link`选项能够进行容器间安全的通信,避免容器的IP端口暴露到外网,并且可以防止当容器重启后IP地址变化所导致的访问失败问题。原理类似与DNS服务器的域名和地址映射。在容器的`/etc/hosts`文件中可以看到添加的IP记录。语法格式如下:  
docker run --link redis-master:master --name ubuntu-console ubuntu /bin/bash

需要注意的是,redis-master容器在设置--link之前启动。上条语法表示,通过docker run用ubuntu镜像创建容器,并且命名为ubuntu-console。再将当前容器--link到redis-master,并给redis-master取别名master。

容器节点启动
  1. 启动redis

    
    # 启动redis
    
    docker run -it 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
  2. 启动Django容器,即应用

    
    # django
    
    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
  3. 启动HAProxy

    docker run -it --name HAProxy --link APP1:APP1 --link APP2:APP2 -p 6301:6301 -v ~/Projects/HAProxy:/tmp haproxy /bin/bash

    注:启动django时,遇到不能启动的情况。后查阅资料表明是ubuntu位数不对引起的,不支持ubuntu 32位系统。

    容器节点配置

    由于容器轻量化设计,所以容器缺乏相应的文本编辑工具,如vimgedit都不存在,这时利用volume来实现文件的创建。上述容器启动时的-v参数用于挂在volume,实现主机和容器间共享数据。在共享区的文件,在主机编辑好,而后在容器中使用。

    1. docker inspect命令查看容器信息。

      • docker inspect 容器名(如redis-master):获取容器全部信息。
      • docker inspect 容器名 | grep Source :获取共享目录在主机的位置。
    2. Resis Master 主数据库容器节点配置

      配置之前需要一个redis.conf的配置文件,这个可以在网站下载(链接

      Redis主数据库需要修改模板文件中的如下几个参数:

      • daemonize yes
      • pidfile /var/run/redis.pid
      • bind 0.0.0.0

      注:在vim文本编辑器中可用/(从上到下搜索)、(从下到上搜索)。(/daemonize

      完成redis.conf文件修改,切换到redis-master容器,执行如下步骤:

      cd /data
      cp redis.conf /usr/local/bin
      cd /usr/local/bin
      redis-server redis.conf
    3. Redis Slave 从容器

      配置文件redis.conf修改如下:

      • daemonize yes
      • pidfile /var/run/redis.pid
      • slaveof master 6379

      启动方式和主数据库类似。

    4. 数据库容器节点测试

      • redis-master容器命令行界面输入redis-cli,进入Redis的客户端模式
      • set master value ,这是redis数据库的设置键值模式,设置键:master,值:value。
      • get master ,获取键:master 的值,客户端界面应该返回值:value
      • 在redis-slave1容器命令行界面输入redis-cli,在输入get master取值,如果返回value,则配置成功。

      注:

      • 在Redis客户端,输入info可查当前数据库的配置信息。(可以看到slave从数据库个数,作为验证配置是否正确)
      • 当检查redis.conf配置都正确,但测试通不过,可尝试在关闭Redis,在重新启动。
      
      # redis-master 在/usr/local/bin/目录
      
      redis-cli shutdown
      redis-server redis.conf

资料:

  1. 书籍《docker 容器与容器云》
  2. Herbert_Kwok的容器与容器云阅读笔记
  3. redis.conf文件
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值