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.6

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 6301:6301 -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 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 可破.

时间: 2024-10-14 00:39:18

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

docker容器与容器云 读书笔记一 第一章

第一章:从容器到容器云 1.1    云计算平台经典云计算架构包括了IaaS(Infrastructure as a Service,基础设施即服务).PaaS(Platform as a Service,平台即服务).SaaS(Software as a Service,软件即服务)三层服务 1.2    容器,新的革命 Docker是什么? 基于官方的定义,Docker是以Docker容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员设计的,用于构建.发布和运行分布

Docker:Up &amp; Running(读书笔记,前半部分)

Docker:Up & Running C/S Model + Registry 3大组件:Compose(Fig),Machine,Swarm bridge("docker0")<-->private subnets(可用--net关闭,直接使用host地址) "无状态架构":不应把数据库引擎潜到docker容器? vs '有状态应用' 无状态应用:依赖都可以通过环境变量传递(可能需要对现有App的代码改造) lightweight:1.4.1

【转载】基于Docker的CaaS容器云平台架构设计及市场分析

[转自]http://www.cnblogs.com/darkprince/p/5115739.html 基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施.缩短应用向云端交付的周期,降低运营门槛.加速企业向互联网技术和业务的双转型. 容器云将

【原创】基于Docker的CaaS容器云平台架构设计及市场分析

基于Docker的CaaS容器云平台架构设计及市场分析 ---转载请注明出处,多谢!--- 1 项目背景---概述: “在移动互联网时代,企业需要寻找新的软件交付流程和IT架构,从而实现架构平台化,交付持续化,业务服务化. 容器将成为新一代应用的标准交付件,容器云将帮助企业用户构建研发流程和云平台基础设施.缩短应用向云端交付的周期,降低运营门槛.加速企业向互联网技术和业务的双转型. 容器云将对接各类代码托管库,实现自动化持续集成和DOCKER镜像构建,为新一代应用交付和开发运维一体化奠定了基础.

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

app1 (建议读者在看本章之前,先看how tomcat works 读书笔记(一)----------一个简单的web服务器 http://blog.csdn.net/dlf123321/article/details/39378157) 回顾我们上一章,我们开发了一个最最简单的web服务器,它可以使用户访问服务器内的静态资源.当然这是远远不够的,在这一节里,我们就试着让服务器在能相应静态资源的基础上继续支持servlet. servlet接口 javax.servlet.Servlet接口

Docker——容器与容器云——互动出版网

这篇是计算机类的优质预售推荐>>>><Docker--容器与容器云> Docker和Kubernetes这一本就够了!从内核知识到容器原理,容器云技术深度揭秘!全面理解Docker源码实现与高级使用技巧.深入解读Kubernetes源码分析和最佳实践! 编辑推荐 从源码层面深度解析Docker核心原理 Kubernetes源码完全解读+最佳实践 广泛涵盖Docker高级实践技巧 全面梳理主流容器云技术架构方法 内容简介 本书从实践者的角度,在讲解Docker高级实践技巧

阿里云下docker启动mysql容器,开启外部访问

阿里云下docker启动mysql容器,开启外部访问 (1)拉取mysql镜像 ```docker pull centos/mysql-57-centos7``` (2)创建容器 ```docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7``` -p 代表端口映射,格式为  宿主机映射端口:容器运行端口 -e 代表添加环境变量  MYSQL

C++ Primer 第四版读书笔记(八)之顺序容器

容器容纳特定类型对象的集合. 标准库vector类型,是一个顺序容器.它将单一类型元素聚集起来称为容器,然后根据位置来存储和访问这些元素,这就是顺序容器.顺序容器的元素排列次序与元素值无关,而是由元素添加到容器里的次序决定. 标准库定义了三种顺序容器类型:vector.list和deque.它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价.标准库还提供了三种容器适配器.实际上,适配器是根据原始的容器类型所提供的操作,通过定义新的操作接口,来适应基础的容器类型. 顺序容器类型 顺

(转)Spring 读书笔记-----使用Spring容器(一)

Spring有两个核心接口:BeanFactory和ApplicationContext,其中ApplicationContext是BeanFactory的子接口.他们都可代表Spring容器,Spring容器是生成Bean实例的工厂,并且管理容器中的Bean. Bean是Spring管理的基本单位,在基于Spring的Java EE应用中,所有的组件都被当成Bean处理,包括数据源.Hibernate的SessionFactory.事务管理器等.在Spring中,Bean的是一个非常广义的概念