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进行挂载,然后在做dockerweb容器,这样的话就可以从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

 

客户端:通过访问keepalivedVIP地址,然后就可以安装论坛了

Firefox  192.168.6.254

 

docker容器的实践——综合项目一的更多相关文章

  1. Docker容器入门实践

    Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 ...

  2. Docker容器发布spring boot项目

    一.安装Docker环境 yum install docker 安装完成后,使用下面的命令来启动 docker 服务,并将其设置为开机启动: systemctl start docker.servic ...

  3. Docker容器中启动OPMS项目

    1.上传opms项目包到Linux下面 2.解压赋权 3.执行文件即可 4.浏览器输入服务器ip地址加上8088端口号

  4. docker容器dockerfile详解

    docker公司在容器技术发展中提出了镜像分层的理念,可以说也是这个革命性的理念让原本只不过是整合linux内核特性的容器,开始野蛮生长. docker通过UnionFS联合文件系统将镜像的分层实现合 ...

  5. python服务不能在docker容器里运行的问题

    在开发过程中,我们将mysql.redis.celery等服务在docker容器里跑,项目在本地运行,便于debug调试 docker-compose -f docker-compose-dev.ym ...

  6. Docker容器安装配置SQLServer服务(Linux)

    一:前言 随着不断的对Docker容器的实践和学习,越来越觉得容器的强大,把 SQL Server 数据库服务放在docker容器中,比你自己在宿主服务器上面安装配置一个SQL Server服务器是要 ...

  7. [CoreOS 转载] CoreOS实践指南(七):Docker容器管理服务

    转载:http://www.csdn.net/article/2015-02-11/2823925 摘要:当Docker还名不见经传的时候,CoreOS创始人Alex就预见了这个项目的价值,并将其做为 ...

  8. Kubernetes+Docker+Istio 容器云实践

    随着社会的进步与技术的发展,人们对资源的高效利用有了更为迫切的需求.近年来,互联网.移动互联网的高速发展与成熟,大应用的微服务化也引起了企业的热情关注,而基于Kubernetes+Docker的容器云 ...

  9. 在Docker容器中运行.Net Core web Api项目

    安装Docker环境 参考本人这篇<CentOS 7 下Docker的安装>文章进行安装以及环境配置,这里不做赘述. 通过.NetCore开发WebApi项目 1. 创建.Net Core ...

随机推荐

  1. [wordpress]WordPress地址(URL)错误,修改解决方案

    本人在修改Wordpress地址(URL)时,误操作使URL指向错误,后台无法进入. 解决方案 1.先利用Putty登陆到自己的服务器上(这里登陆方法我不再赘述): 2.登陆MySqL,并输入密码: ...

  2. 关于linux上部署定时python脚本

    遇到的坑: Python脚本中的文件操作,最好都用绝对路径, 文件头上写 #!/usr/local/bin/python3.6 ----------------------------------- ...

  3. ISP PIPLINE (六) AWB

    What is WB(white balance)? 人的视觉和神经系统在看到白色物体的时候,基本不受环境的变化而出现严重的错觉.比如阴天,晴天,室内,室外,日光灯,白炽灯等的环境下,人依然会将白纸视 ...

  4. 开源搜索引擎solr elasticsearch学习计划

    其实不单单是研究solr elasticsearch把,进行调研性技术学习时,应该制定一些目标以及里程碑.新的技术调研 学习是一件很爽的事,能学到新技术新东西.但是在学习新技术同时,有几个问题是需要我 ...

  5. python 3编写贴吧图片下载软件(超简单)

    业余时间初学者作品,大佬勿喷,代码都很简单. py文件打包成exe教程:python3.7 打包成exe程序, 本程序体验下载地址:python编译的贴吧图片下载工具 先上效果图 启动后是这样的: 按 ...

  6. Java中在实例化一个类时,这个类中没有初始值的int类型成员变量i,i的值是不是0?

    java中有两种类型一种是数值性,另一种是类变量数值性变量的初始值为0,类变量的初始化为null没做初始化成员变量int性变量是0, 在java中有这么一条规则,声明在方法中的变量在使用时必须要初始化 ...

  7. __x__(26)0907第四天__文档流_网页最底层

    文档流 处在网页的最底层,表示的是一个页面中的位置. 创建的元素,默认都处于文档流中. 元素在文档流中的特点 块元素 在文档流中独占一行. 自上而下排列. 宽度默认占父元素的 100%,width=& ...

  8. go 并发编程(2)

    协程 执行体是个抽象的概念,在操作系统层面有很多个概念与之对应,如操作系统自己掌管的进程(process),进程内的线程(thread),以及进程内的协程(coroutine,也叫轻量级线程).与传统 ...

  9. direction: rtl;

    这个属性,有点无语,费了点时间. <style type="text/css"> .hao {direction: rtl;}</style> <se ...

  10. 【Python基础】lpthw - Exercise 39 字典

    1. 字典和列表的区别 对于列表,它是一些项的有序排列,只能通过数值来进行索引:对于字典,则可以通过许多东西进行索引,它采用键-值映射的方式,不存在一个特定的顺序,因此不能用类似列表的数值索引,但它的 ...