gpt4 book ai didi

Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 27 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

下载Tomcat8镜像 。

?
1
2
3
4
5
[root@localhost ~] # docker search tomcat8
NAME                   DESCRIPTION                   STARS        OFFICIAL      AUTOMATED
ashince /tomcat8             Tomcat GUI Manager pre-configured docker ima…  5                   
podbox /tomcat8                                      2                    [OK]

这个tomcat包含了jdk而且启动了可以直接访问,自己启动了8080端口 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@localhost ~] # docker pull ashince/tomcat8
Using default tag: latest
latest: Pulling from ashince /tomcat8
06b22ddb1913: Pulling fs layer
336c28b408ed: Pull complete
1f3e6b8d80c3: Pull complete
[root@localhost ~] # docker images
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
nginx        latest       2622e6cca7eb    2 weeks ago     132MB
ashince /tomcat8   latest       02aedead27dd    22 months ago    314MB
启动一个Nginx容器和两个Tomcat容器
[root@localhost ~] # docker run -itd -p 8080:8080 ashince/tomcat8
3e3f2aabe67de7ee3f4b6d62176e21aaa9d2302922845cb08ad37af7146b13c5
[root@localhost ~] # docker run -itd -p 8081:8080 ashince/tomcat8
644d59711c805a626b7c1c219aa018f744098a14dd41e54744d6b13e7ba66a2f
[root@localhost ~] # docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS          NAMES
cca55c4ad919    ashince /tomcat8   "catalina.sh run"    About a minute ago  Up About a minute  0.0.0.0:8081->8080 /tcp  unruffled_lalande
08b58d2f41d6    ashince /tomcat8   "catalina.sh run"    7 minutes ago    Up 7 minutes    0.0.0.0:8080->8080 /tcp  relaxed_williamson
aeebcb0b40a2    nginx        "/docker-entrypoint.…"  2 hours ago     Up 2 hours     0.0.0.0:80->80 /tcp    priceless_ardinghelli

Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#将Nginx容器当中的配置拷贝到本地修改,因为容器当中没有vi vim命令
[root@localhost ~] # docker cp 68d2bdf336ed:/etc/nginx/conf.d/default.conf .
[root@localhost ~] # ls
anaconda-ks.cfg default.conf index.html
[root@localhost ~] # grep -vE "#|^$" default.conf
server {
   listen    80;
   listen [::]:80;
   server_name localhost;
   location / {
     root  /usr/share/nginx/html ;
     index index.html index.htm;
   }
   error_page  500 502 503 504 /50x .html;
   location = /50x .html {
     root  /usr/share/nginx/html ;
   }
}
 
#两台tomcat的ip地址
[root@localhost ~] # for i in {72e174adc77d,080068dae40a};do docker inspect $i| grep -i ipaddr |tail -n 1;done
           "IPAddress" : "172.17.0.4" ,
           "IPAddress" : "172.17.0.3" ,
拷贝静态资源到Nginx目录下做动静分离 ,同时修改配置文件
#将其中一台Tomcat的ROOT目录拷贝到本地,因为做动静分离Nginx需要访问静态资源要在本地
[root@localhost ~] # docker cp 72e174adc77d:/usr/local/tomcat/webapps/ROOT .
 
#拷贝到Nginx发布目录下面
[root@localhost ~] # docker cp ROOT   68d2bdf336ed:/usr/share/nginx/html/
[root@localhost WEB-INF] # docker exec 68d2bdf336ed ls -l /usr/share/nginx/html/ROOT
total 184
-rwxrwxrwx 1 root root 7064 Jun 21 2017 RELEASE-NOTES.txt
drwxrwxrwx 2 root root  21 Jul 27 2017 WEB-INF
-rwxrwxrwx 1 root root 26447 Jun 21 2017 asf-logo-wide.svg
-rwxrwxrwx 1 root root  713 Jun 21 2017 bg -button.png
-rwxrwxrwx 1 root root 1918 Jun 21 2017 bg -middle.png
-rwxrwxrwx 1 root root 1392 Jun 21 2017 bg -nav-item.png
-rwxrwxrwx 1 root root 1401 Jun 21 2017 bg -nav.png
-rwxrwxrwx 1 root root 3103 Jun 21 2017 bg -upper.png
-rwxrwxrwx 1 root root 21630 Jun 21 2017 favicon.ico
-rwxrwxrwx 1 root root 12279 Jun 21 2017 index.jsp
-rwxrwxrwx 1 root root 2376 Jun 21 2017 tomcat-power.gif
-rwxrwxrwx 1 root root 5581 Jun 21 2017 tomcat.css
-rwxrwxrwx 1 root root 2066 Jun 21 2017 tomcat.gif
-rwxrwxrwx 1 root root 5103 Jun 21 2017 tomcat.png
-rwxrwxrwx 1 root root 67795 Jun 21 2017 tomcat.svg
 
#修改后的Nginx配置文件如下,修改完后拷贝会容器当中
[root@localhost ~] # docker cp default.conf 68d2bdf336ed:/etc/nginx/conf.d/default.conf
[root@localhost ~] # docker exec 68d2bdf336ed cat /etc/nginx/conf.d/default.conf
upstream tomcat_web{
server 172.17.0.3:8080 weight=100 max_fails=2 fail_timeout=15;
server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15;
}
 
server {
   listen    80;
   listen [::]:80;
   server_name localhost;
   error_page  500 502 503 504 /50x .html;
   root  /usr/share/nginx/html ;
   location /{
   proxy_pass http: //tomcat_web ;
   proxy_set_header host $host;
   }
  
   location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
    root /usr/share/nginx/html/ROOT ;
    expires 30d;
    access_log off;
   }
  
   location ~ .*\.(eot|ttf|otf|woff|svg)$ {
    root /usr/share/nginx/html/ROOT ;
    expires 30d;
    access_log off;
   }
  
   location ~ .*\.(js|css)$ {
    root /usr/share/nginx/html/ROOT ;
    expires 30d;
    access_log off;
   }
   location = /50x .html {
     root  /usr/share/nginx/html ;
   }
}
 
#加载新的配置项
[root@localhost ~] # docker exec -it 68d2bdf336ed /bin/bash
root@68d2bdf336ed:/ # /usr/sbin/nginx -s reload
2020 /06/29 07:12:05 [notice] 79 #79: signal process started

再去访问Nginx 80端口如图所示:

Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作

补充知识:Docker 基础操作 容器自启动 删除镜像和删除容器 。

Docker容器自动重启设置 。

重启reboot操作系统后,发现docker 服务未启动,容器也未启动,怎么才能重启后自动启动呢 。

1、docker服务自动重启设置 。

[root@localhost ~]# systemctl enable docker.service 。

2、docker容器自动启动设置 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[root@localhost ~] # docker images
REPOSITORY     TAG         IMAGE ID      CREATED       SIZE
nginx        latest       5a3221f0137b    10 months ago    126MB
[root@localhost ~] # docker run -itd -p 80:80 nginx
3e28c4b5c6256c0ba04666751e426987d848b7afeb9c59774d5e9831dc78e5ee
[root@localhost ~] # docker run -itd -p 81:80 nginx
f0597c725fd6b7f4229aa9ab5de4a3cb29d09097a81dc8f64d1a60d469001379
[root@localhost ~] # docker port f0597c725fd6
80 /tcp -> 0.0.0.0:81
 
[root@localhost ~] # docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS        NAMES
f0597c725fd6    nginx        "nginx -g 'daemon of??  30 seconds ago   Up 29 seconds    0.0.0.0:81->80 /tcp  elastic_allen
3e28c4b5c625    nginx        "nginx -g 'daemon of??  35 seconds ago   Up 33 seconds    0.0.0.0:80->80 /tcp  tender_volhard

3、 docker容器自动启动设置 。

?
1
2
3
4
5
6
7
8
9
10
11
[root@localhost ~] # docker update --restart=always f0597c725fd6 3e28c4b5c625
f0597c725fd6
3e28c4b5c625
 
[root@localhost ~] # reboot -h now
Connection closed by foreign host.
 
[root@localhost ~] # docker ps
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS        NAMES
f0597c725fd6    nginx        "nginx -g 'daemon of??  13 minutes ago   Up 2 minutes    0.0.0.0:81->80 /tcp  elastic_allen
3e28c4b5c625    nginx        "nginx -g 'daemon of??  13 minutes ago   Up 2 minutes    0.0.0.0:80->80 /tcp  tender_volhard

当一个host中镜像和容器较多,需要重置时可选择删除其中部分或全部的镜像和容器。那么你就需要下面的操作了.

1、删除容器 。

?
1
2
3
4
5
6
7
[root@localhost ~] # docker ps -a
CONTAINER ID    IMAGE        COMMAND         CREATED       STATUS       PORTS        NAMES
27c5c4d3cf86    nginx        "nginx -g 'daemon of??  2 minutes ago    Up 2 minutes    0.0.0.0:80->80 /tcp  gracious_nash
61cccfe238a8    nginx        "nginx -g 'daemon of??  2 minutes ago    Up 2 minutes    0.0.0.0:81->80 /tcp  distracted_grothendieck
[root@localhost ~] # docker ps -aq
27c5c4d3cf86
61cccfe238a8

1)首先需要停止所有的容器 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[root@localhost ~] # docker ps -aq
f0597c725fd6
3e28c4b5c625
8855c7777f83
466d2efe3dd9
20ca589b1a10
e5457b41cae6
314d1d01c941
 
[root@localhost ~] # docker stop $(docker ps -aq)
f0597c725fd6
3e28c4b5c625
8855c7777f83
466d2efe3dd9
20ca589b1a10
e5457b41cae6
314d1d01c941
[root@localhost ~] # docker ps
CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS       PORTS        NAMES

2)删除所有的容器(只删除单个时把后面的变量改为image id即可) 。

?
1
2
3
4
5
6
7
8
9
10
[root@localhost ~] # docker rm -f $(docker ps -aq)
f0597c725fd6
3e28c4b5c625
8855c7777f83
466d2efe3dd9
20ca589b1a10
e5457b41cae6
314d1d01c941
[root@localhost ~] # docker ps -aq
[root@localhost ~] #

2、删除镜像 。

1)查看host中的镜像 。

docker images 。

2)删除指定id的镜像 。

docker rmi <image id> 。

3)删除全部的images 。

docker rmi $(docker images -q) 。

3、当要删除的iamges和其他的镜像有关联而无法删除时 。

可通过 -f 参数强制删除 。

docker rmi -f $(docker images -q) 。

以上这篇Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我.

原文链接:https://blog.csdn.net/qq_34556414/article/details/107319882 。

最后此篇关于Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作的文章就讲到这里了,如果你想了解更多关于Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com