docker容器與容器雲讀書筆記1

搭建docker應用棧python

操做系統: ubuntu 16.04.1 LTS 桌面版redis

1. 準備工做docker

換網易源, gedit 會報一個metadata的告警, 不用理會, sudo apt-get update, sudo apt-get upgrade 以後就修復了數據庫

 

2. 安裝docker並啓動docker daemondjango

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. 獲取應用棧各節點所需鏡像ubuntu

sudo docker pull ubuntu
sudo docker pull django
sudo docker pull haproxy
sudo docker pull redis
#獲取特定版本 sudo docker pull redis:3.0.6

 

4. 應用棧容器節點啓動vim

# 啓動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 6301:6301 -v ~/Projects/HAProxy:/tmp haproxy /bin/bash

 

5. redis master 主數據庫容器節點配置bash

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

報錯以下: Template parsing error: template: :1:2: executing "" at <.Volumes>: map has no entry for key "Volumes"app

有建議使用 {{ .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 6379

啓動方式相同

 

7. redis 數據庫容器節點測試

master

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

slave

# redis-cli
127.0.0.1:6379> 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:6301
# 須要修改以下 listen redis_proxy bind
0.0.0.0:6301

 

10. 應用棧訪問測試

原書的 http://172.17.0.9 是個迷之地址, 換成 http://127.0.0.1 或 http://localhost 可破.

相關文章
相關標籤/搜索