搭建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 可破.

docker容器与容器云读书笔记1的更多相关文章

  1. Spring读书笔记——bean创建(下)

    有关Spring加载bean系列,今天这是最后一篇了,主要接上篇对于从Spring容器中获取Bean的一些细节实现的补充. <Spring读书笔记--bean加载>--Spring如何加载 ...

  2. 《Docker容器与容器云》读书笔记

    云计算平台 云计算是一种资源的服务模式,该模式可以实现随时随地.便捷按需地从可配置计算资源共享池中获取所需资源(如网络.服务器.存储.应用及服务),资源能够快速供应并释放,大大减少了资源管理工作开销. ...

  3. Docker系列之Docker容器(读书笔记)

    一.介绍 容器是独立运行的一个或一组应用,以及它们的运行态环境.对应的,虚拟机可以理解为模拟运行的一整套操作系统和排在上面的应用. 二.容器 2.1 启动容器 启动容器有两种方式,一种是基于镜像新建一 ...

  4. 【山外笔记-云原生】《Docker+Kubernetes应用开发与快速上云》读书笔记-2020.04.25(六)

    书名:Docker+Kubernetes应用开发与快速上云 作者:李文强 出版社:机械工业出版社 出版时间:2020-01 ISBN:9787111643012 [山外笔记-云原生]<Docke ...

  5. STL源码剖析读书笔记--第四章--序列式容器

    1.什么是序列式容器?什么是关联式容器? 书上给出的解释是,序列式容器中的元素是可序的(可理解为可以按序索引,不管这个索引是像数组一样的随机索引,还是像链表一样的顺序索引),但是元素值在索引顺序的方向 ...

  6. 阿里云部署Docker(7)----将容器连接起来

    路遥知马力.日久见人心.恩. 该坚持的还是要坚持. 今天看到一个迅雷的师弟去了阿里,祝福他,哎,尽管老是被人家捧着叫大牛.我说不定通过不了人家的面试呢.哎,心有惭愧. 本文为本人原创,转载请表明来源: ...

  7. 《精通Spring 4.X企业应用开发实战》读书笔记1-1(IoC容器和Bean)

    很长一段时间关注在Java Web开发的方向上,提及到Jave Web开发就绕不开Spring全家桶系列,使用面向百度,谷歌的编程方法能够完成大部分的工作.但是这种不系统的了解总觉得自己的知识有所欠缺 ...

  8. how tomcat works 读书笔记(二)----------一个简单的servlet容器

    app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/arti ...

  9. Docker学习笔记——制作容器与容器概念

    Docker能做些什么? 1.docker能够解决虚拟机能够解决的问题 2.隔离应用依赖 3.创建应用镜像并复制 4.创建容易分发的即启即用的应用 5.docker的想法是创建软件程序可移植的轻量容器 ...

随机推荐

  1. ASP.NET web.config中的连接字符串

    在ASP.NET的web.config中,可以用两种方式来写连接字符串的配置. <configuration> <appSettings> <add key=" ...

  2. BZOJ 2007: [Noi2010]海拔

    2007: [Noi2010]海拔 Time Limit: 20 Sec  Memory Limit: 552 MBSubmit: 2410  Solved: 1142[Submit][Status] ...

  3. BZOJ 后缀自动机四·重复旋律7

    后缀自动机四·重复旋律7 时间限制:15000ms 单点时限:3000ms 内存限制:512MB 描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一段音乐旋律可以被表示为一段数构成的数列. 神奇的 ...

  4. 实例解析防抖动(Debouncing)和节流阀(Throttling)

    http://outofmemory.cn/javascript/js-Debounce-throttle

  5. Asp.net MVC的ViewData与ViewBag以及TemplateData的使用与区别

    ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 基于Asp.net 3.5 fram ...

  6. EntityFramework错误:Unable to update the EntitySet because it has a DefiningQuery

    错误截图: 解决方法: 在所操作的数据库表中添加一个主键即可解决此问题

  7. Linux 文件压缩与归档

    .note-content { font-family: "Helvetica Neue", Arial, "Hiragino Sans GB", STHeit ...

  8. vue2.0---模板语法

    ***插值 #文本 数据绑定最常见的形式就是双大括号的形式: <div id="app">{{message}}</div> 只要绑定的属性message上 ...

  9. 检查Linux服务器性能

    如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在? 概述通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解. • uptime• ...

  10. Openstack学习目录

    1.2016.12.27    ceph简介   crush算法    OSD(boject storage device)   Mds(cephfs) 使用cephfs时需要安装metadata s ...