docker容器与容器云读书笔记1

搭建docker应用栈

操作系统: ubuntu 16.04.1 LTS 桌面版

1. 准备工作

换网易源, gedit 会报一个metadata的告警, 不用理会, sudo apt-get update, sudo apt-get upgrade 之后就修复了

2. 安装docker并启动docker daemon

sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo apt-get update
sudo apt-get install docker-engine
sudo service docker start

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

sudo docker pull ubuntu
sudo docker pull django
sudo docker pull haproxy
sudo docker pull redis
#获取特定版本 sudo docker pull redis:3.0.

4. 应用栈容器节点启动

# 启动redis容器
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容器
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 : -v ~/Projects/HAProxy:/tmp haproxy /bin/bash

5. redis master 主数据库容器节点配置

sudo docker inspect --format "{{ .Volumes }}" bc8e

报错如下: Template parsing error: template: :1:2: executing "" at <.Volumes>: map has no entry for key "Volumes"

有建议使用 {{ .Config.Volumes }}

sudo docker inspect --format "{{ .Config.Volumes }}" bc8e
输出 map[/data:{}]

grep大法好

sudo docker inspect bc8e | grep Source
"Source": "/var/lib/docker/volumes/xxxxxxx/_data"

之后需要 root 权限, ubuntu 的 sudo cd 会报错, 因为 cd 是 alias

sudo -s
cd /var/lib/docker/volumes/xxxxxxx/_data
cp 你的redis文件夹/redis.conf .
vim redis.conf

需要修改以下参数

# bind 是必须要改的, 否则 slave 会找不到 master, 默认是 127.0.0.1
bind 0.0.0.0

切换到容器中

# /var/lib/redis 这个文件夹必须创建
mkdir /var/lib/redis
cd /data
cp redis.conf /usr/local/bin
cd /usr/local/bin
redis-server redis.conf

6. redis slave 从数据库容器节点的配置

redis.conf的修改项

slaveof master 

启动方式相同

7. redis 数据库容器节点测试

master

# redis-cli
127.0.0.1:> set master bc8e
OK
127.0.0.1:> get master
"bc8e"

slave

# redis-cli
127.0.0.1:> get master
"bc8e"

info 可以检查目前redis状态,  /var/log/redis/redis.log 可以查看日志信息, 如果master的数据没有同步到 slave, 可以利用日志协助排错.

8. APP容器节点的配置

按照书中流程来即可, 直到 python manage.py syncdb 会报错, 因为已经没有这个命令了, 需要执行的是 python manage.py createsuperuser

9. HAProxy 容器节点的配置

# 会报错
listen redis_proxy 0.0.0.0:

# 需要修改如下
listen redis_proxy
bind 0.0.0.0:

10. 应用栈访问测试

原书的 http://172.17.0.9 是个迷之地址, 换成 http://127.0.0.1 或 http://localhost 可破.

上一篇:javaWeb学习总结(7)- 使用Session防止表单重复提交


下一篇:【原】UI随设备旋转从iOS6到iOS8的适配策略