参考内容:
从零搭建K8S集群(无需科学上网)(一)

实现Nginx+Tomcat负载均衡

1、安装docker

1.1 安装必要的依赖

sudo yum install -y yum-utils device-mapper-persistent-data  lvm2

1.2 设置docker仓库

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

`【需要设置一下阿里云镜像加速器】`
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["镜像加速器地址"]`(登录阿里云账号,搜索镜像加速器)`
}
EOF
sudo systemctl daemon-reload

镜像加速器的设置参考:从零搭建K8S集群(无需科学上网)(一)文中第2节

1.3 安装docker

  yum install -y docker-ce-18.09.0 docker-ce-cli-18.09.0 containerd.io

1.4 启动docker

sudo systemctl start docker && sudo systemctl enable docker

2、安装Tomcat

2.1 查找Docker Hub上的tomcat镜像

  • 1)
sudo docker search tomcat
[devuser@henry ~]$ sudo docker search tomcat
NAME                          DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   2814                [OK]
tomee                         Apache TomEE is an all-Apache Java EE certif…   80                  [OK]
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   55                                      [OK]
bitnami/tomcat                Bitnami Tomcat Docker Image                     35                                      [OK]
kubeguide/tomcat-app          Tomcat image for Chapter 1                      29
consol/tomcat-7.0             Tomcat 7.0.57, 8080, "admin/admin"              17                                      [OK]
cloudesire/tomcat             Tomcat server, 6/7/8                            15                                      [OK]
aallam/tomcat-mysql           Debian, Oracle JDK, Tomcat & MySQL              13                                      [OK]
.........................

从查询的镜像中拉取自己需要的版本。

    1. 也可以到官网查找合适的版本:

https://hub.docker.com/_/tomcat
在这里插入图片描述

2.2 拉取官方的镜像

docker pull tomcat

我选择的版本是8.5.56版本,默认下载的是最新版本

[devuser@henry ~]$ sudo docker pull tomcat:8.5.56
[devuser@henry ~]$ sudo docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
tomcat                    8.5.56              e010d327a904        2 months ago        529MB

2.3 运行容器

  • 1)、创建挂载目录:

设置挂载目录:意思把宿主机的一个文件夹映射到容器的webapps目录,直接把war包上传到宿主机的文件夹,不用再复制到tomcat容器里面了,tomcat容器的webapps目录会直接使用这个文件夹下的文件。

设置容器别名:之前不设置别名,操作关闭容器,或进入容器内我们都要找到此容器ID,并根据此容器ID来操作,很不方便。–name xxx之后我们可以直接操作xxx别名

设置开机自启:–restart=always参数不用多说,意思就是开机自启

  • 2)启动容器执行脚本
docker run -d -p 8080:8080 --name mytomcat  
-v /home/data/mounts/mytomcat/webapps:/usr/local/tomcat/webapps 
-v /home/data/mounts/mytomcat/logs:/usr/local/tomcat/logs 
-v /etc/localtime:/etc/localtime:ro
--restart=always tomcat:8.5.56

脚本解释:

-d:后台运行;

-P :随机端口映射;

-p:指定端口映射; 格式:宿主机端口:容器端口

-v:文件挂载

此外,设置-v /etc/localtime:/etc/localtime:ro挂载的目的是为了保证容器和宿主机的时间一致。

  • 3)查看容器运行情况
[devuser@henry mytomcat]$ sudo docker run -d -p 8080:8080 --name mytomcat  
-v /home/data/mounts/mytomcat/webapps:/usr/local/tomcat/webapps 
-v /home/data/mounts/mytomcat/logs:/usr/local/tomcat/logs 
-v /etc/localtime:/etc/localtime:ro
--restart=always tomcat:8.5.56
e010d327a904
a52e84b8d57e6b9893347baa4758a7ef4c2f529a0341e06305518950c066609d
`容器运行情况`
[devuser@henry mytomcat]$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
a52e84b8d57e        e010d327a904        "catalina.sh run"   10 seconds ago      Up 9 seconds        0.0.0.0:8080->8080/tcp   mytomcat
`查看容器的详情(网络、镜像、挂载情况等)`
[devuser@henry mytomcat]$ sudo docker inspect mytomcat
`查看容器的日志`
[devuser@henry mytomcat]$ sudo docker logs mytomcat

2.4 访问容器

用ip:port即可对Tomcat进行访问;

此时注意上方的port为容器映射到宿主机上的port端口。

C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200821172141618.png

3 Nginx安装

docker安装Nginx方法同Tomcat安装类似;

1)拉取镜像

[devuser@henry ~]$ sudo docker pull nginx
[devuser@henry ~]$ sudo docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
nginx                     latest              4bb46517cac3        11 days ago         133MB
tomcat                    8.5.56              e010d327a904        2 months ago        529MB
  • 2)创建挂载目录
[devuser@henry nginx]$ mkdir -p /home/data/mounts/nginx/{www,logs,conf}

其中:

www: 目录将映射为 nginx 容器配置的虚拟目录。

logs: 目录将映射为 nginx 容器的日志目录。

conf: 目录里的配置文件将映射为 nginx 容器的配置文件。

  • 3)运行docker容器
docker run -d -p 80:80 --name nginx_test 
  -v /home/nginx/www:/usr/share/nginx/html 
  -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
  -v /home/nginx/logs:/var/log/nginx
  -v /etc/localtime:/etc/localtime:ro
  --restart=always
  nginx

命令说明:

--rm:容器终止运行后,自动删除容器文件。

-p 80:80: 将容器的 80 端口映射到主机的 80 端口.

--name nginx_test:将容器命名为 nginx_test

-v /home/nginx/www:/usr/share/nginx/html:将我们自己创建的 www 目录挂载到容器的 /usr/share/nginx/html。

-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:将我们自己创建的 nginx.conf 挂载到容器的 /etc/nginx/nginx.conf。

-v /home/nginx/logs:/var/log/nginx:将我们自己创建的 logs 挂载到容器的 /var/log/nginx。

  • 3)查看容器运行情况:
[devuser@henry nginx]$ sudo docker container ps
CONTAINER ID        IMAGE                              COMMAND                  CREATED             STATUS              PORTS                     NAMES
32e98fa073cf        tomcat:8.5.56                      "catalina.sh run"        About an hour ago   Up About an hour    0.0.0.0:8080->8080/tcp   mytomcat
5da8416158a5        nginx                              "/docker-entrypoint.…"   3 days ago          Up 3 days           0.0.0.0:80->80/tcp        nginx_test

对于使用Nginx对Tomcat进行负载均衡的转发,可参考文章:实现Nginx+Tomcat负载均衡

总结

通过docker我们可以很快的启动一个Tomcat容器,通过目录的挂载,可以不用进入到容器里面进行操作,直接将打好的war包放入到指定目录下就可以了。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐