拜读:docker容器与容器云(2)
总结一下docker的学习搭建过程
看了3.1讲的内核,比较懵逼
看了网上的挑一挑外挂,基于python和模拟器的,试了试,都整好了,结果模拟器上微信的挑一挑打不开了。。。
1,获取镜像
docker pull haproxy
docker pull redis
docker pull django
2,分别启动六个容器
三个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
两个Django
docker run -it --name APP1 --link redis-master:db -v /root/Projects/Django/App1:/usr/src/app django /bin/bash
docker run -it --name APP2 --link redis-master:db -v /root/Projects/Django/App2:/usr/src/app django /bin/bash
一个HAProxy
docker run -it --name HAProxy --link APP1:APP1 --link APP2:APP2 -p 6301:6301 -v ~/Projects/HAProxy:/tmp haproxy /bin/bash
建议开七个窗口
2,配置三个redis
针对没有使用-v参数的容器 查看他的默认挂载点
查看对应的挂载点 docker inspect imageID | grep Source
从网上下载redis.conf【地址:http://download.redis.io/releases/redis-4.0.6.tar.gz】文件。对应的大版本就行
流程是:
- 进入到挂载点目录,
- 拷贝redis.conf,
- 修改参数,
- 进入对应的容器,
- 进入到对应的挂载点目录,
- 将其redis.conf拷到 /usr/local/bin/,
- 启动redis,
- 测试主从redis
1,使用docker ps -a 查看所有容器在,在使用docker inspect f2b | grep -E "Source|Destination"命令查看三个redis对应的挂载目录
source对应的是主机的挂载点,Destination对应的是容器中与之对应的挂载点2,拷贝redis.confcd <Source.value>cp <you_redis.conf_dir>/redis.conf redis,conf3,修改参数,主节点修改三个参数band 0.0.0.0 #不然会搜索不到主redisdeamonize yespidfile /var/run/redis.pid从节点修改四个参数band 0.0.0.0deamonize yespidfile /var/run/redis.pid #这里该不该都行slaveof master 63794,进入对应的容器5,进入到对应的挂载点目录,cd <Destination.value>6,将其redis.conf拷到 /usr/local/bin/,7,启动redis,redis.server redis.conf8,测试主从redisredis-cli 进入到redis的命令,使用set和get对其设置值和取值
3,配置两个App
- 在容器中使用pip命令安装redis
- 创建并启动App
1 在容器中使用pip命令安装redispip install redis测试
2,创建并启动App使用容器中python+Django环境生成cd /usr/src/appmkdir dockerwebcd dockerwebcd dockerwebdjango-admin.py startproject rediswebcd rediswebpython manage.py startapp helloworld生成helloworld文件切换到主机中,编辑相应的配置文件:views、setting、urlscd /root/Projects/Django/App1/dockerweb/redisweb/helloworld/vim views.pyfrom django.shortcuts import render# Create your views here.from django.http import HttpResponseimport redisdef hello(request):str = redis.__file__str += "<br>"r = redis.Redis(host='db',port=6379, db=0)info = r.info()str += ("set hi <br>")r.set('Hi','Helloworld-APP1')str +=("Get Hi:%s <br>" % r.get('Hi'))str +=("Redis Info:<br>")str +=("Key:Info Value")for key in info:str += ("%s : %s <br>" % (key,info[key]))return HttpResponse(str)编辑setting文件cd ../redisweb/#允许外来访问ALLOWED_HOSTS = ['*']#添加helloworld项目# Application definitionINSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','helloworld',]编辑urls.py添加引用from helloworld.views import hello增加链接url(r'^helloworld$',hello),
编译helloworld项目python manage.py makemigrationspython manage.py migratepython manage.py createsuperuser #设置后台管理的用户名和密码 邮箱随便设置启动helloworld项目python manage.py runserver 0.0.0.0:8001
4,HAProxy容器节点的配置
- 在主机中编辑haproxy.cfg文件
- 在容器中启动
- 测试访问
1,编辑haproxy.cfg文件cd ~/Projects/HAProxyvim haproxy.cfggloballog 127.0.0.1 local0maxconn 4096chroot /usr/local/sbindaemonnbproc 4pidfile /usr/local/sbin/haproxy.piddefaultslog 127.0.0.1 local3mode httpoption dontlognulloption redispatchretries 2maxconn 2000balance roundrobintimeout connect 5000mstimeout client 50000mstimeout server 50000mslisten redis_proxybind 0.0.0.0:6301bind-process 2 #pao zai laing ge CPU shang`stats enablestats uri /haproxy-statsserver APP1 APP1:8001 check inter 2000 rise 2 fall 5server APP2 APP2:8002 check inter 2000 rise 2 fall 5适当的注释(注:这里少了两项: bind 0.0.0.0:6301,bind-process 2 #pao zai laing ge CPU shang`)
2,进入容器并启动cd /tmpcp haproxy.cfg /usr/local/sbincd /usr/local/sbinhaproxy -f haproxy.cfg注:杀死所有有关HAProxy的进程:killall haproxy测试
美好的一天 明天加油