docker容器的实践——综合项目一
|
Docker 综合实验
|
|
实验拓扑: 【调度器】 Keepalived + nginx 一.Keepalived服务的安装配置: 关闭LVS服务器的ipv4代理和转换的功能。 vim /etc/sysctl.conf 修改 net.ipv4.ip_forward = 1 添加: net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.eth0.send_redirects = 0 sysctl -p //刷新内核文件 4.安装Keepalived的依赖关系 yum -y install kernel-devel openssl-devel popt-devel 5.从y2c里解压keepalived软件,进行编译,编译会自动生成一个服务文件,只要将服务加入系统服务里,并开启即可。 cd /root tar zxf keepalived-1.2.13.tar.gz -C /usr/src cd /usr/src/keepalived-1.2.13/ ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/ && make && make install chkconfig --add keepalived chkconfig keepalived on 6.配置文件模板的备份,防止改坏。 cd /etc/keepalived/ cp keepalived.conf keepalived.conf.bak 7.编辑keepalived 工具的配置文件进行以下修改。 并且重启服务。 vim /etc/keepalived/keepalived.conf global_defs { router_id LVS_DEVEL_r1 } vrrp_instance VI_1 { state MASTER interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.6.254 } notify_master "/etc/init.d/nginx start" notify_backup "/etc/init.d/nginx stop" notify_fault "/etc/init.d/nginx stop" }
备注:备份keepalived的配置基本相同,需要修改的地方是: router_id LVS_DEVEL_r2 state BACKUP priority 50 启动服务: service keepalived start 二.nginx服务安装配置 yum -y install pcre-devel zlib-devel useradd -M -s /sbin/nologin nginx cd /root tar zxf nginx-1.6.0.tar.gz -C /usr/src cd /usr/src/nginx-1.6.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module make && make install ln -s /usr/local/nginx/sbin/* /etc/init.d/nginx 编辑配置文件 vim /usr/local/nginx/conf/nginx.conf 去掉注释: user nobody; error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; pid logs/nginx.pid; 添加: 33 #gzip on; 34 upstream nginx_server { 35 server 192.168.6.110:32777 weight=1; 36 server 192.168.6.110:32773 weight=1; 37 } 46 location / { 47 root html; 48 index index.html index.htm; 49 proxy_pass http://nginx_server; 50 } 注:前边的数字是行数
启动nginx服务: nginx 重载nginx服务 killall -s HUP nginx 监听nginx端口,看到监听的nginx为80即可。 netstat -anpt | grep nginx 【nfs】 注意:先做nfs,然后将docker host 要映射到容器的目录/www进行挂载,然后在做docker的web容器,这样的话就可以从nfs映射到容器里了,否则nfs只能映射到docker host ,映射不到容器: 创建共享目录,设置权限,然后启动nfs服务 mkdir /www chown -R nginx.nginx /www vim /etc/exports 添加: /www 192.168.6.0/24 (rw,no_root_squash,sync) systemctl restart rpcbind systemctl restart nfs
然后将docker 主机上的卷容器挂载到nfs服务器上 mount -t nfs 192.168.6.113:/www /www/ |
|
【web集群的配置】 Docker 主机的配置 1.清空放火墙,关闭沙盒 Iptables -F setenforce 0 2.开启ipv4转发 vim /etc/sysctl.conf net.ipv4.ip_forward = 1 sysctl -p 3.创建docker的bridge网络,需要注意的是不能和本机是一个网段,回形成地址冲突。 docker network create --driver bridge --subnet 192.168.102.0/24 --gateway 192.168.102.1 my_net 查看自定义网络: docker network ls 4.测试这个时候docker host是否可以连接外网 ping www.baidu.com 5.解压nginx和php的tar包 docker images tar load -i php.tar docker load -i php.tar docker images 6.创建物理的映射目录,用来同步nginx的首页数据,并创建nginx用户,用来给物理目录设置权限,让nginx认为所有的目录都是自己的本地目录,方便数据同步。 mkdir /www useradd nginx chown -R nginx.nginx /www 7.创建卷容器,讲物理目录映射到nginx和php容器里,用来同步数据。 docker create --name vc_data -v /www/:/www/ busybox 8.创建php容器,并进行配置。 docker run -itd --name php-y -p 9000 -p 80 --network my_net --volumes-from vc_data 985e8dfa17da docker ps docker exec -it php-y /bin/bash 进入容器后的配置: (1)查看IP地址,是否是自定义的网段IP地址,然后测试是否可以ping通外网验证网络是否畅通。 ifconfig 192.168.102.2 (2)由于其他的配置在做php的tar包的时候已经做了,所以现在可以直接修该配置文件了。 vim /usr/local/php/etc/php-fpm.conf 修改: user = nginx group = nginx listen = 192.168.102.2:9000 (3)优化启动服务的命令。 cp /usr/src/php-5.3.28/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm chkconfig php-fpm on (4)创建nginx用户,因为指定了php-fpm文件启动使用的用户,所以要创建。 useradd nginx (5)启动php-fpm服务,并查看端口监听是否为9000 /etc/init.d/php-fpm start netstat -anpt | grep php-fpm 9.创建nginx容器,并进行配置。 docker run -itd --name web1 -p 80 -p 9000 --network my_net --volumes-from vc_data 2ae963791a66 docker run -itd --name web2 -p 80 -p 9000 --network my_net --volumes-from vc_data 2ae963791a66 86 docker run -itd --name web3 -p 80 -p 9000 --network my_net --volumes-from vc_data 2ae963791a66 docker exec -it web1 /bin/bash 注意:三台nginx配置相同 (1)给映射进来的/www的目录设置权限, chown -R nginx.nginx /www (2)安装查看ip和编辑文本的工具 yum -y install vim net-tools (3)编辑nginx的配置文件 vim /usr/local/nginx/conf/nginx.conf 修改: 去掉注释: user nobody; error_log logs/error.log; pid logs/nginx.pid; 修改: 43 location / { 44 root /www; ——nginx的物理目录 45 index index.php index.html index.htm; ——php的首页文件 72 location ~ \.php$ { 73 root /www; ——nginx服务的根目录 74 fastcgi_pass 192.168.102.2:9000; ——监听php容器的ip+端口 75 fastcgi_index index.php; 76 fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; 77 include fastcgi.conf; 78 } (4)安装nginx服务启动的工具psmisc yum -y install psmisc (5)重载nginx服务,要是重启的话则直接退出容器并且关闭了容器。 killall -s HUP nginx netstat -anpt | grep ngixn 10.验证nginx是否可以连接php-fpm 在docker host 的共享目录/www创建php的默认页面,然后可以到nginx和php的容器里查看,是否将目录映射到了里边,需要注意的是在这两个容器里,/www目录的权限并不是nginx,而是docker主机的nginx的id号,但是不影响。 cd /www vim index.php <?php phpinfo(); ?> 11.验证是否连接成功 通过docker ps 查看映射nginx容器的docker host的随机端口,然后访问docker host的IP地址加nginx的80映射出来的随机端口可以访问nginx是否连接到了php容器。 firefox 192.168.6.110:32773 创建完成的镜像和容器:
【数据库】 setenforce 0 iptables -F systemctl stop firewall yum -y remove mariiadb-server mariadb yum -y remove mariadb-server mariadb rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm yum -y install mysql-community-server systemctl start mysqld mysqladmin -u root password 123.com mysql -u root -p123.com create database luntan; grant all on luntan.* to 'root'@'%' identified by '123.com'; flush privileges;
ifconfig 验证:在php的容器上进行数据库的连接测试,然后就可以安装论坛 mysql -u root -h 192.168.6.113 -p123.com
客户端:通过访问keepalived的VIP地址,然后就可以安装论坛了 Firefox 192.168.6.254
|
docker容器的实践——综合项目一的更多相关文章
- Docker容器入门实践
Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 ...
- Docker容器发布spring boot项目
一.安装Docker环境 yum install docker 安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动: systemctl start docker.servic ...
- Docker容器中启动OPMS项目
1.上传opms项目包到Linux下面 2.解压赋权 3.执行文件即可 4.浏览器输入服务器ip地址加上8088端口号
- docker容器dockerfile详解
docker公司在容器技术发展中提出了镜像分层的理念,可以说也是这个革命性的理念让原本只不过是整合linux内核特性的容器,开始野蛮生长. docker通过UnionFS联合文件系统将镜像的分层实现合 ...
- python服务不能在docker容器里运行的问题
在开发过程中,我们将mysql.redis.celery等服务在docker容器里跑,项目在本地运行,便于debug调试 docker-compose -f docker-compose-dev.ym ...
- Docker容器安装配置SQLServer服务(Linux)
一:前言 随着不断的对Docker容器的实践和学习,越来越觉得容器的强大,把 SQL Server 数据库服务放在docker容器中,比你自己在宿主服务器上面安装配置一个SQL Server服务器是要 ...
- [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务
转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...
- Kubernetes+Docker+Istio 容器云实践
随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求.近年来,互联网.移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于Kubernetes+Docker的容器云 ...
- 在Docker容器中运行.Net Core web Api项目
安装Docker环境 参考本人这篇<CentOS 7 下Docker的安装>文章进行安装以及环境配置,这里不做赘述. 通过.NetCore开发WebApi项目 1. 创建.Net Core ...
随机推荐
- Codeforces 1109D. Sasha and Interesting Fact from Graph Theory 排列组合,Prufer编码
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1109D.html 题意 所有边权都是 [1,m] 中的整数的所有 n 个点的树中,点 a 到点 b 的距离 ...
- gitLib操作笔录《一》:创建分支,切换分支,提交分支到远程,以及基本代码clone与更新提交到远程操作指令
git 操作经验注:master表示的是主线,origin 表示远程源 创建分支:git checkout -b < branch_name >或 < master >切换分支 ...
- servlet(一):Servlet的概念和运行流程
概念: 狭义的 Servlet 是指 Java 语言实现的一个接口,广义的 Servlet 是指 任何实现了这个 Servlet 接口的类,一般情况下,人们将 Servlet 理解为后者. Servl ...
- Selenium 2自动化测试实战
Selenium 2自动化测试实战 百度网盘 链接:https://pan.baidu.com/s/1aiP3d8Y1QlcHD3fAlEj4sg 提取码:jp8e 复制这段内容后打开百度网盘手机Ap ...
- S0.2 灰度图
目录 灰度图定义 灰度图优点 RGB转灰度算法(OpenCV3) 量化 算法公式 OpenCV自带函数实现 综合比较 灰度图定义 对于单色(灰度)图像而言,每个像素的亮度用一个数值来表示,通常数值范围 ...
- 6.3 Pandora 实操 - 数据立方
简介 数据立方是适用于大规模实时数据(每天百亿条,10TB+ 级别数据)查询与分析的数据库系统,提供交互式的访问数据的能力,支持数据过滤.分组.聚合,实现亚秒级以内对亿行级别的数据表进行多维探索分析. ...
- python联系-迭代器
from collections import Iterable from collections import Iterator import time class Classmate(object ...
- Ehcache 3.7文档—基础篇—JCache aka JSR-107
一. 概述JCache Java临时缓存API(JSR-107),也被称为JCache,它是一个规范在javax.cache.API中定义的.该规范是在Java Community Process下开 ...
- 小甲鱼零基础python课后题 P21 020函数:内嵌函数和闭包函数
测试题 0.如果希望在函数中修改全局变量的值,应该使用什么关键字? 答:globe 1.在嵌套函数中,如果希望在内部函数修改外部函数的局部变量,应该使用什么关键字? 答:nonlocal 2.pyth ...
- Rabbitmq消息持久化
1.交换机持久化设置 exchange 持久化,在声明时指定 durable未true 2.队列持久化设置 queue 持久化,在声明时指定 durable 为true 3.消息持久化设置 Deliv ...
