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

2025-05-26 0 44

下载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容器实现负载均衡动静分离操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持快网idc。

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

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Docker Nginx容器和Tomcat容器实现负载均衡与动静分离操作 https://www.kuaiidc.com/53025.html

相关文章

发表评论
暂无评论