1、最终搭建的环境:

      一台centos7.5的虚拟机Nginx做反向代理,IP 192.168.1.119

      一台centos7.5的虚拟机做宿主机部署三个节点的discuz程序,IP192.168.1.123

2、discuz搭建出来的效果:

      ng反向代理对外发布192.168.1.119的80端口提供统一服务。三个容器节点组成一个地址池,作为ng的upstream来分担不同用户的请求。同时,在容器的宿主机上部署一个共享卷,来存放discuz的数据库及应用程序。

2.1 三个discuz节点容器

 discuz论坛的端口分别为8883/8881/8888

zk单机部署docker_html

2.2  ng的反向代理的部分配置

zk单机部署docker_zk单机部署docker_02

2.3 最后效果:

      浏览器访问ng发布的192.168.1.119,流量会以Iphash保持的方式分发给后端三个容器的应用上。实现流量的负载分担,业务的负载均衡。

3、docker容器部署过程。

3.1 一些必备的docker命令

docker image ls //查看本地所有镜像
      docker container ls//查看所有运行的容器
      docker container ls -a //查看所有运行中的容器
      docker container start 容器ID// 启动容器
      docker container stop 容器ID  //停止容器
       docker container run -it 容器ID //以交互的式的方式登录到容器内部
3.2 备份更新yum源   
       mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak   //备份本地yum源
       wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo  //获取阿里yum源配置文件
       yum makecache  //更新cache

3.3 安装docker

       yum install -y docker

3.4 查看版本

zk单机部署docker_html_03

3.5 启动docker

    systemctl restart docker

3.6 新建html和mysql两个文件

    用来存放discuz程序和mysql数据库。

    注意:做完此步骤,需要确认关闭selinux,否则会影响mysql php的安装。

 

zk单机部署docker_html_04

 

3.7 修改daemon.json

vi /etc/docker/daemon.json
{
 "registry-mirrors": ["https://"]
 }


 

3.8 下载并启动基础镜像(以cnetos6.9为例)

[root@node1 vol]# docker pull centos:6.9 //下载镜像到本地
   [root@node1 vol]# docker image ls //查看下载的镜像
     REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
      /centos    6.9                 2199b8eb8390        11 months ago       195 MB
  docker run -it --name="zhaojie_centos_bbs" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html 2199b8eb8390
 //以交换式启动容器,同时经mysql 和php的目录分别挂在到新建的mysql 和html文件中。3.9 安装安装LAMP软件
    //通过3.8的启动,本步骤操作是在容器内部进行。
    [root@27957da4a878 init.d]# yum install openssh-server -y //安装ssh server
    [root@27957da4a878 init.d]# yum install httpd -y   // 安装apahce
    [root@27957da4a878 init.d]# yum install mysql mysql-server -y  // 安装mysql
    [root@node1 vol]# yum install php php-mysql -y  //安装php3.10 初始化所有程序
 1)初始化ssh
 [root@27957da4a878 init.d]# /etc/init.d/sshd start           
 Generating SSH2 RSA host key: [  OK  ]
 Generating SSH1 RSA host key: [  OK  ]
 Generating SSH2 DSA host key: [  OK  ]
 Starting sshd: [  OK  ]
 [root@27957da4a878 init.d]# 
 [root@27957da4a878 init.d]# /etc/init.d/sshd stop
 Stopping sshd: [  OK  ]
 [root@27957da4a878 init.d]# echo "123456" |passwd root --stdin  //设置root等密码
 Changing password for user root.
 passwd: all authentication tokens updated successfully.
 [root@27957da4a878 init.d]#   2)初始化数据库
 [root@27957da4a878 init.d]#  /etc/init.d/mysqld start
 Starting mysqld:  [  OK  ]
 [root@27957da4a878 init.d]# mysqlmysql> grant all on *.* to root@'%' identified by '123'; //设置mysql远程登录信息
 Query OK, 0 rows affected (0.00 sec)mysql> grant all on *.* to discuz@'%' identified by '123';
 Query OK, 0 rows affected (0.00 sec)mysql> create database discuz;  // 新建discuz数据库,
 Query OK, 1 row affected (0.00 sec) 3)初始化apahce
 [root@27957da4a878 init.d]# /etc/init.d/httpd start
 Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2 for ServerName
 [  OK  ]
   3.11 制作第一版镜像(具备LAMP环境)  
    [root@node1 ~]# docker commit 27957da4a878 zhaojie/centos6.9_lamp_v1 
     sha256:54689b0e1a4f3e46b73a976773c44a8803b54400867ffdd0c8ebbaecd52b6af6
     [root@node1 ~]# docker image ls
     REPOSITORY                        TAG                 IMAGE ID            CREATED             SIZE
      zhaojie/centos6.9_lamp_v1   latest              54689b0e1a4f        6 seconds ago       400 MB
       /centos                   6.9                 2199b8eb8390        11 months ago       195 MB

3.12 根据第一版镜像,启动新容器

zk单机部署docker_docker_05

3.13 删除discuz安装程序,制作第二版LAMP+bbs镜像

 1)  discuz程序上传到192.168.1.123的/html目录中。

2)制作镜像
[root@node1 html]# docker commit 7ff3f3f7ab17 zhaojie/centos6.9_sshd_lamp_bbs:v1
 sha256:c52a25a18df77098ffbbf077f2b2247513c1c861955e52358103ea75b879be43

 [root@node1 html]# docker image ls -a
 REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
 zhaojie/centos6.9_sshd_lamp_bbs   v1                  c52a25a18df7        10 seconds ago      505 MB
 zhaojie/centos6.9_lamp_v1             latest              54689b0e1a4f        3 hours ago         400 MB
 /centos                               6.9                 2199b8eb8390        11 months ago       195 MB3.14 创建启动脚本
   注意:此步骤的目的是容器启动后自动启动myslq httpd进程,同时使用sshd -D命令夯在后台运行。
   这个脚本放在html目录中,赋予可执行权限。
   [root@docker html]# cd /opt/vol/html
    [root@docker html]# cat 
    #!/bin/bash
    /etc/init.d/mysqld
    /etc/init.d/httpd
    /usr/sbin/sshd -D
    [root@node1 html]#

3.15 根据第二版镜像启动容器,映射端口,自动启动多服务

[root@node1 html]# docker container run -d --name="zhaojie_bbs_1" -v /opt/vol/mysql:/var/lib/mysql -v /opt/vol/html:/var/www/html -p 2222:22 -p 8888:80 -p 33060:3306 c52a25a18df7 /var/www/html/
 88b0382947bb6a106b6aca865ac63675f943b45f1e9ddf0975237ae159aada74
 [root@node1 html]# run -d // 使用守护进程方式启动
-p 2222:22 -p 8888:80 -p 33060:3306  //分别以2222,8888,33060发布容器的22,80,3306端口

3.16 根据3.15启动命令模板,分别启动第二 三个容器

 启动三个容器后结果如下

zk单机部署docker_zk单机部署docker_06

3.17 客户端访问测试

 打开三个浏览器分别输入  http://192.168.1.123:8888/install  http://192.168.1.123:8881/install  http://192.168.1.123:8883/install

安装discuz程序。程序部署好后,访问首页如下:

 

zk单机部署docker_docker_07

 

至此,三个容器搭建完毕,

 

3.18 此环境容器小结

zk单机部署docker_docker_08

 

4 nginx安装配置

4.1 ng的安装

 略

4.2 ng的配置

zk单机部署docker_zk单机部署docker_02

 

5 docker 网络简介

 待补充

6 K8S 简介

 待补充