如何在docker中部署Tomcatweb
Tomcat简介
创新互联建站专注于泸溪网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供泸溪营销型网站建设,泸溪网站制作、泸溪网页设计、泸溪网站官网定制、微信平台小程序开发服务,打造泸溪网络公司原创品牌,更为您提供泸溪网站排名全网营销落地服务。
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat优点
1、兼有可扩du展性和安全性。假如单位时间内访问请求zhi数急剧增加,可以用相对较低的费dao用增加前端的能力。
2、比较容易扩展。由于是通过在这台功能强大的服务器上运行的单个servlet容器,实际上也就不需要考虑session状态在分布式环境下的维护这类复杂的问题。
3、台后端服务器在外界不可以访问,网上的黑客只能访问前端的web服务器,不能直接访问后端的应用服务器,这就提高了安全性。但这并不意味着黑客们不能通过网络浏览器进行其它形式的攻击。
一、 准备工作
关闭selinux服务
getenforce 查看selinux状态,并关闭selinux,否则启动docker时会报错。
[root@localhost ~]# getenforce 查看selinux状态
Disabled
修改selinux配置文件
docker启动报错信息:
修改完selinux后重启服务器:
[root@localhost ~]# reboot
(注:安装软件为docker的可能会遇到这个问题,安装软件为docker-ce可能不会遇到。)- 下载安装docker-ce
[root@localhost ~]#yum list | grep docker-ce 检查yum 源的docker包信息
[root@localhost~]#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 安装rpm更新源
[root@localhost ~]# yum list docker-ce --showduplicates | sort –r 查看仓库中docker版本
[root@localhost ~]#yum install -y docker-ce 安装docker
[root@localhost ~]#systemctl strat docker.service 启动docker程序
[root@localhost ~]# systemctl status docker.service 查看docker运行状态
[root@localhost ~]#systemctl enable docker.service 添加开机启动
[root@localhost ~]# docker version 查看docker版本
Client: Docker Engine - Community
Version: 19.03.5
API version: 1.40
Go version: go1.12.12
Git commit: 633a0ea
Built: Wed Nov 13 07:25:41 2019
OS/Arch: linux/amd64
Experimental: false
- 部署jave环境
wget https://download.oracle.com/otn/java/jdk/8u231-b11/5b13a193868b4bf28bcb45c792fce896/jdk-8u231-linux-x64.tar.gz?AuthParam=1575959715_a901df40b664e3cff9415b957ddf441e
[root@localhost ~]# docker cp jdk-8u231-linux-x64.tar.gz 4c069f9a9851:/root 将jdk拷贝到容器中
拷贝命令:docker cp <.bashrc文件路径> <镜像name或image_ID>:<文件存放路径>
[root@localhost ~]# docker exec -it tomcat /bin/bash 进入Tomcat容器
root@4c069f9a9851:~# cd /root/
root@4c069f9a9851:~# tar -zxvf jdk-8u231-linux-x64.tar.gz 解压jdk
修改环境变量,在.bashrc中添加jdk变量,添加以下代码。
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_231
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
重启Tomcat容器:
[root@localhost src]# docker ps -a
CONTAINERID IMAGE COMMAND CREATED STATUS PORTS NAMES
e14bcf5dd711 training/sinatra "/bin/bash" 19 hours ago Exited (0) 19 hours ago kind_golick
4c069f9a9851 tomcat "catalina.shrun" 19 hours ago Up 17h ours 0.0.0.0:8081->8080/tcp tomcat
[root@localhost src]# docker restart 4c069f9a9851
或
[root@localhost src]# docker restart tomcat
二、 安装web应用
[root@localhost ~]# docker search tomcat 在网上服务器查找有关Tomcat镜像信息
我们选择“STARS”资源最多的进行拉取
[root@localhost ~]# docker pull docker.io/tomcat 拉取Tomcat镜像
[root@localhost ~]# docker run -d --name tomcat -p 8081:8080 docker.io/tomcat 后台运行Tomcat镜像
若端口被占用,可以指定容器和主机的映射端口,前者是外围访问端口,后者是容器内部端口。 -d参数:容器会在后台运行并不会把输出的结果打印到宿主机上面。使用 -d 参数启动后会返回一个唯一的 id。
注:在此处遇到在不运行这条命令时Tomcat镜像无法启动。错误如下:
[root@localhost ~]# docker start docker.io/tomcat
Error response from daemon: No such container: docker.io/tomcat
Error: failed to start containers: docker.io/tomcat
其次在查看镜像状态时,不显示任何信息:
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker run -d --name tomcat -p 8081:8080 docker.io/tomcat
[root@localhost ~]# systemctl status firewalld.service 查看防火墙运行状态
[root@localhost ~]# docker start tomcat
注:
前提:在此处由于前面将防火墙关闭,导致在启动Tomcat镜像时,无法启动。
原因:由于Tomcat镜像需要用到NAT服务,关闭防火墙导致NAT服务无法使用。
问题信息:
[root@localhost ~]# docker start tomcat
Error response from daemon: driver failed programming external connectivity on endpoint tomcat (826ed3a9043296bc37b913c8f0cd900fe7424ffdcb93ff22d5f95fc39070a21f): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 8081 -j DNAT --to-destination 172.17.0.2:8080 ! -i docker0: iptables: No chain/target/match by that name.
[root@localhost ~]# docker ps –a 查看镜像信息
注意Tomcat镜像的PORTS信息是否是0.0.0.0:8081->8080/tcp内容,是的话直接访问IP:8081,不是的话可能需要做NAT转换,自定义端口访问。
三、 效果图
四、 部署网页测试
将web数据拷贝到Tomcat容器中
[root@localhost ~]# docker cp XXX.war 4c069f9a9851:/usr/local/tomcat/webapps
[root@localhost ~]# docker exec -it 4c069f9a9851 /bin/bash 进入Tomcat容器
root@4c069f9a9851:/usr/local/tomcat# cd webapps/
root@4c069f9a9851:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager index.html manager
退出docker容器,Ctrl+p+q
重新启动容器,docker restart tomcat
到此web部署就算完成了。
可参考:https://blog.csdn.net/liqz666/article/details/82180581
五、 常用命令
ip addr/ip link/ ifconfig:查看宿主机里ip地址(宿主机表示是虚拟机)
systemctl start docker/service start docker:启动docker服务
systemctl stop docker:关闭docker服务
docker run:启动container
docker seach xxxx(镜像名称):检索镜像
docker pull xxx(镜像名称):拉取镜像
docker images:列出镜像
docker --version:查看docker的版本信息
docker exec Container Id:进入容器
docker exec -it NAMES(自定义名称) /bin/bash:进入--name命名的容器
docker exec NAMES(容器的自定义名称)-it bash:进入容器里进行操作
docker attach Container Id:进入到容器的终端
docker inspect IMAGE ID:显示容器或镜像的元数据
[root@(container id)]:比如root@24527d42d3eb表示已进入docker里的一个CONTAINER ID的容器内部
docker ps:查看docker里运行的容器(status为Up....表示运行中)
docker ps -a:查看docker里已停止或正在运行的容器(status为Exit)
docker start CONTAINER ID :如果容器的状态为Exit,用它来启动容器
docker stop CONTAINER ID :停止正在运行的容器,删除一个容器必须先要停止
docker restart :当部署web项目的war文件,到tomcat里的webapps里面了,重启一下docker服务,就自动解压了war文件
docker rm CONTAINER ID :删除容器
docker rm $(docker ps -a -q):删除所有已停止的容器;
docekr rmi IMAGE ID:删除镜像
rm -rf xxxx:强制删除某个war.文件或目录、文件
docker cp /xxx.war CONTAINER ID :/usr/local/tomcat/webapps:从/根目录复制一个打包后的Java web war文件 到tomcat容器里的webapps工作目录里
docker exec CONTAINER ID ls /usr/local/tomcat:默认的 安装tomcat镜像的webapps目录
docker run -name xxx -p (自定义端口号,用来访问的):(容器的端口号:比如tomcat的8080,MySQL的3306) -d docker.io/tomcat(镜像名称):表示在docker里运行一个tomcat容器,如果没有镜像,自动pull一个tomcat的镜像
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
--name 为容器取一个名字
-p 容器要映射的端口号
-d:后台运行
-t:进入终端
-i:获得一个交互式的连接,通过获取container的输入
/bin/bash:在container中启动一个bash shell
举例:docker run --name tomcat -p 8081:8080 -d tomcat
六、 查看docker日志
[root@localhost ~]# journalctl -u docker.service 查看docker日志
分享标题:如何在docker中部署Tomcatweb
网页网址:http://ybzwz.com/article/ghgecs.html