- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
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
|
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 基础操作 容器自启动 删除镜像和删除容器 。
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的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
这是我想做的 1 - 点击提交 2 - 隐藏 DIV 容器 1 3 - 显示 DIV 容器 2 4 - 将“PricingDisclaimer.php”中找到的所有 DIV 加载到 Div 容器 2
我有一个 ios 应用程序,它使用 iCloudcontainer 来保存用户的一些数据,例如用户的“到期日期”。我要用不同的方式创建应用程序的副本开发者账号。我要将用户从第一个应用程序迁移到第二个应
这是场景。 我有三个容器。 Container1、container2 和 container3(基于 Ubuntu 的镜像),其中 container2 充当容器 1 和容器 2 之间的路由器。 我
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 9 年前。 Improve this ques
我正在改造管道以使用声明式管道方法,以便我能够 to use Docker images在每个阶段。 目前我有以下工作代码,它执行连接到在 Docker 容器中运行的数据库的集成测试。 node {
我正在开发一个需要尽可能简单地为最终用户安装的应用程序。虽然最终用户可能是经验丰富的 Linux 用户(或销售工程师),但他们对 Tomcat、Jetty 等并不真正了解,我认为他们也不应该了解。 所
我从gvisor-containerd-shim(Shim V1)移到了containerd-shim-runsc-v1(Shim V2)。在使用gvisor-containerd-shim的情况下,
假设我们只在某些开发阶段很少需要这样做(冒烟测试几个 api 调用),让项目 Bar 中的 dockerized web 服务访问 Project Foo 中的 dockerized web 服务的最
各位,我的操作系统是 Windows 10,运行的是 Docker 版本 17.06.0-ce-win19。我在 Windows 容器中运行 SQL Server Express,并且希望将 SQL
谁能告诉我,为什么我们不能在 Azure 存储中的容器内创建容器?还有什么方法可以处理,我们需要在 azure 存储中创建目录层次结构? 最佳答案 您无法在容器中创建容器,因为 Windows Azu
#include template struct Row { Row() { puts("Row default"); } Row(const Row& other) { puts
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
RDF容器用于描述一组事物 例如,把一本书的所有作者列在一起 RDF容器有三种类型: <Bag> <Seq> <Alt> <rdf:
编辑:从到目前为止添加的答案和评论看来,我没有正确解释我想要什么。下面是一个例子: // type not supporting any type of comparison [] [] type b
我正在测试 spatie 的异步项目。我创建了一个这样的任务。 use Spatie\Async\Task; class ServiceTask extends Task { protecte
我想使用 Azure Blob 存储来上传和下载文档。有一些公司可以上传和下载他们的文档。我想保证这些文件的安全。这意味着公司只能看到他们的文件。不是别人的。 我可以在 blob 容器中创建多个文件夹
我正在尝试与 Azure 中的容器实例进行远程交互。我已执行以下步骤: 已在本地注册表中加载本地镜像 docker load -i ima.tar 登录远程 ACR docker登录--用户名--密码
我正在研究http://progrium.viewdocs.io/dokku/process-management/,并试图弄清楚如何从单个项目中运行多个服务。 我有一个Dockerfile的仓库:
我有一个想要容器化的单体应用程序。文件夹结构是这样的: --app | |-file.py <-has a variable foo that is passed in --configs
我正在学习 Docker,并且一直在为 Ubuntu 容器制作 Dockerfile。 我的问题是我不断获取不同容器之间的持久信息。我已经退出,移除了容器,然后移除了它的图像。在对 Dockerfil
我是一名优秀的程序员,十分优秀!