简介

利用云服务器及容器技术的优势,将多个服务器运行内容搭建在一个服务器上,并通过目录挂载将容器更改的内容保留至本地,防止容器关闭后数据丢失获取安装Tomcat、Nginx、MySQL

1、分别获取安装默认版本的tomcat nginx mysql

 # 由于国内***较慢,请耐心等待

    docker pull tomcat
    docker pull nginx
    docker pull mysql

2、配置tomcat

# 创建用来挂载的本地目录
mkdir -p /localdo/tomcat/webapps/tomcat1
mkdir -p /localdo/tomcat/webapps/tomcat2

# 将制作好的2个不同内容War包放到上面2个目录,测试用,此处不演示

# 创建一个Tomcat容器,命名为my_tomcat1;将容器的8080端口映射到宿主机的8001
# 将宿主机的/localdo/tomcat/webapps/tomcat1 目录挂载到容器上的/usr/local/tomcat/webapps 目录
docker run --name=my_tomcat1 -v /localdo/tomcat/webapps/tomcat1:/usr/local/tomcat/webapps -p 8001:8080 -d tomcat

# 在创建一个容器,挂载目录tomcat2,用来均衡负载
docker run --name=my_tomcat1 -v /localdo/tomcat/webapps/tomcat2:/usr/local/tomcat/webapps -p 8001:8080 -d tomcaty

2.1验证Tomcat容器

#仅供参考
[root@centos7-4-hg /]# curl http://localhost:8001/MyServlet/index.html
<html>
    <head>
        <title>my first servlet</title>
    </head>
<body>
    hello,servlet! by1
</body>

</html>
[root@centos7-4-hg /]# curl http://localhost:8002/MyServlet/index.html
<html>
    <head>
        <title>my first servlet</title>
    </head>
<body>
    hello,servlet! by2
</body>

3.配置Nginx容器

#创建挂载目录,编辑文件
mkdir -p /localdo/nginx
mkdir -p /localdo/nginx/conf.d
touch /localdo/nginx/nginx.conf
touch /localdo/nginx/conf.d/default.conf

#用vi编辑配置文件nginx.conf
user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;

    upstream tomcatServer {
      server t1:8080;
      server t2:8080;
    }
}

#编辑配置文件default.conf
server {
    listen       80;
    server_name localhost;
    location / {
        proxy_pass   http://tomcatServer;
    }
}

#启动并配置nginx容器
#容器命名为my_nginx1
#给my_tomcat1、my_tomcat2容器分别起别名,t1、t2
#挂载/localdo/nginx/nginx.conf文件和/localdo/nginx/conf.d目录
#将容器的端口号80映射到宿主机的8000端口
docker run --name=my_nginx1 --link=my_tomcat1:t1 --link=my_tomcat2:t2 -v /localdo/nginx/nginx.conf:/etc/nginx/nginx.conf -v /locado/nginx/conf.d:/etc/nginx/conf.d -p 8000:80 -d nginx

3.1运行效果

[root@centos7-4-hg /]# curl http://localhost:8000/MyServlet/index.html
<html>
    <head>
        <title>my first servlet</title>
    </head>
<body>
    hello,servlet! by1
</body>

</html>[root@centos7-4-hg /]# curl http://localhost:8000/MyServlet/index.html
<html>
    <head>
        <title>my first servlet</title>
    </head>
<body>
    hello,servlet! by2
</body>
#可见Nginx实现了均衡负载

4、配置MySQL

#创建挂载目录
mkdir -p /localdo/mysql/data /localdo/mysql/logs /localdo/mysql/conf
#data目录将映射为mysql容器配置的数据文件存放路径
#logs目录将映射为mysql容器的日志目录
#conf目录里的配置文件将映射为mysql容器的配置文件

#启动MySQL容器
docker run -p 3306:3306 --name my_mysql1 -v /u01/mysql/conf:/etc/mysql/conf.d -v /u01/mysql/logs:/logs -v /u01/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
#将容器的 3306 端口映射到主机的 3306 端口。挂载相应目录。始化 root 用户的密码。

4.1进入MySQL

[root@centos7-4-hg /]# docker exec -it my_mysql1 bash
root@a61c2f08e6e4:/# mysql -uroot -p123456
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 10
Server version: 8.0.19 MySQL Community Server - GPL

Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 
#此后再对mysql进行xian