总结一下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.conf
cd
cp /redis.conf redis,conf
3,修改参数,
主节点修改三个参数
band 0.0.0.0 #不然会搜索不到主redis
deamonize yes
pidfile /var/run/redis.pid
从节点修改四个参数
band 0.0.0.0
deamonize yes
pidfile /var/run/redis.pid #这里该不该都行
slaveof master 6379
4,进入对应的容器
5,进入到对应的挂载点目录,cd
6,将其redis.conf拷到 /usr/local/bin/,
7,启动redis,
redis.server redis.conf
8,测试主从redis
redis-cli 进入到redis的命令,使用set和get对其设置值和取值
3,配置两个App
- 在容器中使用pip命令安装redis
- 创建并启动App
1
在容器中使用pip命令安装redis
pip install redis
测试
2,
创建并启动App
使用容器中python+Django环境生成
cd /usr/src/app
mkdir dockerweb
cd dockerweb
cd dockerweb
django-admin.py startproject redisweb
cd redisweb
python manage.py startapp helloworld
生成helloworld文件
切换到主机中,编辑相应的配置文件:views、setting、urls
cd /root/Projects/Django/App1/dockerweb/redisweb/helloworld/
vim views.py
from django.shortcuts import render
# Create your views here.
from django.http import HttpResponse
import redis
def hello(request):
str = redis.__file__
str += "
"
r = redis.Redis(host='db',port=6379, db=0)
info = r.info()
str += ("set hi
")
r.set('Hi','Helloworld-APP1')
str +=("Get Hi:%s
" % r.get('Hi'))
str +=("Redis Info:
")
str +=("Key:Info Value")
for key in info:
str += ("%s : %s
" % (key,info[key]))
return HttpResponse(str)
编辑setting文件
cd ../redisweb/
#允许外来访问
ALLOWED_HOSTS = ['*']
#添加helloworld项目
# Application definition
INSTALLED_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 makemigrations
python manage.py migrate
python manage.py createsuperuser #设置后台管理的用户名和密码 邮箱随便设置
启动helloworld项目
python manage.py runserver 0.0.0.0:8001
4,HAProxy容器节点的配置
- 在主机中编辑haproxy.cfg文件
- 在容器中启动
- 测试访问
1,
编辑haproxy.cfg文件
cd ~/Projects/HAProxy
vim
haproxy.cfg
global
log 127.0.0.1 local0
maxconn 4096
chroot /usr/local/sbin
daemon
nbproc 4
pidfile /usr/local/sbin/haproxy.pid
defaults
log 127.0.0.1 local3
mode http
option dontlognull
option redispatch
retries 2
maxconn 2000
balance roundrobin
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
listen redis_proxy
bind 0.0.0.0:6301
bind-process 2 #pao zai laing ge CPU shang`
stats enable
stats uri /haproxy-stats
server APP1 APP1:8001 check inter 2000 rise 2 fall 5
server 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 /tmp
cp
haproxy.cfg /usr/local/sbin
cd
/usr/local/sbin
haproxy -f haproxy.cfg
注:杀死所有有关HAProxy的进程:killall haproxy
测试
美好的一天 明天加油