【Docker】如何用Docker安装Tomcat

news2024/12/27 11:29:55

请添加图片描述


专栏精选文章

  1. 《Docker是什么?Docker从介绍到Linux安装图文详细教程》
  2. 《30条Docker常用命令图文举例总结》
  3. 《Docker如何构建自己的镜像?从镜像构建到推送远程镜像仓库图文教程》
  4. 《Docker多个容器和宿主机之间如何进行数据同步和数据共享?容器数据卷从介绍到常用操作图文教程》

本期目录

  • 专栏精选文章
  • 1. 搜索镜像
  • 2. 拉取镜像
  • 3. 查看镜像
  • 4. 启动容器
  • 5. 访问主页
  • 6. 拉取免修改的Tomcat8镜像



1. 搜索镜像

  1. 在 Docker Hub 上查找 Tomcat 镜像。

image-20221212195411919

复制右侧的命令即可下载最新版的 Tomcat 。

image-20221212195514981


2. 拉取镜像

  1. 从 Docker Hub 上拉取 Tomcat 镜像到本地仓库。
$ docker pull tomcat

Tomcat 的镜像还算是比较大的,一共 680 MB 。

image-20221212200136778


3. 查看镜像

  1. docker images 查看是否有拉取到 Tomcat 镜像。
$ docker images -a

image-20221212200228573


4. 启动容器

  1. 使用 Tomcat 镜像创建容器实例。
$ docker run -d -p 8080:8080 --name t1 tomcat:latest

这一步的 Docker 命令是比较复杂的,各个可选项的说明如下。

可选参数说明
-p设置端口映射,宿主机端口:容器端口
-P随机分配端口
-i前台交互式启动,通常与 -t 配合使用
-t启动容器内的伪终端,通常与 -i 配合使用
-d后台守护式启动
–name为容器命名

image-20221212200610167

查看正在运行的容器。

$ docker ps

image-20221212200721043

Tomcat 容器 t1 已经成功运行了。

注意,确保你的宿主机防火墙关闭或者开放了 8080 端口。

如果你是新手,很懒,我建议你直接关闭宿主机的防火墙:

$ systemctl stop firewalld
$ systemctl disable firewalld
$ firewall-cmd --reload

如果你在企业,不能关闭防火墙,那就只放开 Tomcat 的端口 8080 :

$ firewall-cmd --zone=public --remove-port=8080/tcp --permanent

查看宿主机已经放开的端口:

$ firewall-cmd --zone=public --list-ports

image-20221212203522568


5. 访问主页

  1. 访问 Tomcat 猫首页。

在 Windows 电脑上打开浏览器,地址栏输入:

http://192.168.168.101:8080

image-20221212201011511

但是访问失败,这是因为最新版的 Tomcat 在首页上的访问是不一样的。

【解决办法】

首先以前台交互式进入 Tomcat 容器 t1 中。

$ docker exec -it t1 /bin/bash

image-20221212201819296

查看当前目录。

$ ls -l

image-20221212202114890

所有网页资源都应该在 webapps 目录下,进入看看。

$ cd webapps
$ ls -l

image-20221212202237905

发现是空的,这就解释了为什么没办法访问 Tomcat 猫首页了。新版的 Tomcat 的猫首页放在了 webapps.dist 里,我们只需要把 webapps 目录删除,再把 webapps.dist 重命名为 webapps 即可。

$ rm -rf webapps
$ mv webapps.dist webapps

image-20221212202723047

再次在浏览器中访问:

http://192.168.168.101:8080

image-20221212202916783

成功访问 Tomcat 首页。此时也可以发现 Tomcat 版本是 10.0 ,算是比较高的版本了,一般现在企业用的还都是 8 或 9 。


6. 拉取免修改的Tomcat8镜像

  1. 免修改版说明。

正如上面所演示的,最新的 Tomcat 10 在主页上的改动对新手是不太友好的。在企业中绝大部分都还在用 Tomcat 8.0 或 9.0 ,这已经够用了。因此,我们删除最新版的 Tomcat 容器和镜像,转而下载带有 JDK 8 的 Tomcat 8.0 版本镜像。

删除 Tomcat 容器:

$ docker rm -f t1

删除 Tomcat 镜像:

$ docker rmi -f tomcat:latest

image-20221212204223941

拉取带有 JDK 8 的 Tomcat 8.0 版本镜像:

$ docker pull billygoo/tomcat8-jdk8

image-20221212204557845

使用该镜像创建 Tomcat 容器实例 t8

$ docker run -d -p 8080:8080 --name t8 billygoo/tomcat8-jdk8:latest

image-20221212204722987

在浏览器中访问:

http://192.168.168.101:8080

image-20221212204845306

直接就可以访问 Tomcat 的主页,不需要做任何修改。可以看到 Tomcat 版本是 8.0.53 ,比最新版的 Tomcat 10.0 对新手更友好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/83349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

关于linux下的xinetd服务

我们在网络通信时候用到socket套接字,有的时候我们更希望Linux能使用http协议等于前端有一定的交互,那么xinetd服务无疑是Linux下一种很好的方法。 什么是xinetd呢?xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务器,…

[附源码]Python计算机毕业设计SSM基于的婚恋系统(程序+LW)

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

ERStudio操作指南

ERStudio操作指南一、创建逻辑模型二、生成SQL脚本本文使用的ER/Studio版本:ER/Studio Version 8.0.2 一、创建逻辑模型 1、打开ER/Studio后,选择:File>New,打开如下界面,选择Draw a new data model。 如上图&am…

接口调用、客户端lb、嵌套JSON解析、慎用 foreach、新建类封装

文章目录接口调用出错推荐客户端负载均衡多层JSON嵌套大数据量 插入慎用foreach使用Api时新建一个类封装、方便维护接口调用出错 故障转移:重试选择其他可用节点,做好幂等性可用!!!快速失败 推荐客户端负载均衡 服务…

如何在 Java 中调用 MATLAB 代码

文章目录测评完整源代码运行环境: MATLAB R2022a Java 8(1.8.0_311) IntelliJ IDEA 2022.2.1 (Ultimate Edition) Maven 3.8.3 Windows 10 教育版 64位 使用混合编程通常都不是好主意,但是有时候会遇到极端的情况。Java 擅长…

git与github安装与配置

git与github安装与配置 最近总是害怕电脑和实验代码突然出事,想了想,拖了很久的git给搞好,所以花了几个小时,从入门到搭建好,这篇文章与其他文章来说,总体上是大同小异,算是前人的一个总结&…

【python基于mysql数据库实现无页面学生信息管理系统】

python基于mysql数据库实现无页面学生信息管理系统以及简单操作mysql前言一、分步讲解0.创建两张数据表1.大概思路2.首先连接数据库3.查看所有学生成绩信息4.查看所有学生个人信息5.查看指定学生成绩信息6.添加学生个人信息7.添加学生成绩信息8.修改学生个人信息9.修改学生成绩…

多模态融合技术

多模态融合的主要目标是缩小模态间的异质性差异,同时保持各模态特定语义的完整性,并在深度学习模型中取得较优的性能。 一、多模态融合架构 多模态融合架构分为:联合架构,协同架构和编解码器架构。联合架构是将单模态表示投影到…

数据库运维 | 携程分布式图数据库NebulaGraph运维治理实践

作者简介:Patrick Yu,携程云原生研发专家,关注非关系型分布式数据存储及相关技术。 背景 随着互联网世界产生的数据越来越多,数据之间的联系越来越复杂层次越来越深,人们希望从这些纷乱复杂的数据中探索各种关联的需求…

[附源码]Python计算机毕业设计大学生心理健康咨询系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

(免费分享)基于jsp,ssm酒店管理系统

开发工具:eclipse,mysql5.7 Tomcat8.0,jdk1.8 系统分用户前台和管理后台两部分 前台截图: 后台截图: package com.mypower.controller;import java.io.IOException; import java.io.OutputStream; import java.io.P…

行业如此内卷,品牌如何实现可持续招商增长?

文|螳螂观察(TanglangFin) 作者|陈小江 2019年,厦门的一位单亲妈妈,听了一堂课,驱车十几个小时抵达南京,就为找一个人。 找一个,能救企业的人。 由于股权融资对赌失败,这位原本坐…

【C初阶】第八篇——结构体

结构体的声明 什么是结构体 结构体的声明 结构成员的类型 结构体变量的定义和初始化 结构体成员的访问 结构体传参 结构体的声明 什么是结构体 结构体是一些值的集合,这些值称为成员变量.结构的每个成员可以是不同类型的变量. 结构体的声明 struct tag {member - list…

艾美捷人乳铁蛋白ELISA试剂盒预期用途注意事项

艾美捷Kamiya人乳铁蛋白ELISA试剂盒预期用途: 人乳铁蛋白ELISA是一种高度灵敏的双位点酶联免疫测定(ELISA)人类生物样品中乳铁蛋白的测定。仅供研究使用。不用于诊断程序。 引言 乳铁蛋白(LF)是一种具有抗菌活性的多…

Spring源码深度解析十六:@Aspect方式的AOP下篇 - createProxy

一、前言 文章目录:Spring源码深度解析:文章目录 我们上篇已经分析到了 Spring将已经找到所有适用于当前bean 的Advisor 集合。下面就要创建代理对象了,而代理对象的创建是从 AbstractAutoProxyCreator#createProxy()开始。下面我们就来看看…

微信小程序|基于小程序+C#制作一个聊天系统

此文主要基于小程序C#使用WebSocket制作一个聊天系统,基本实现小程序与服务端的聊天功能。用小程序自带的客服功能只能绑定微信且一对一沟通,接入市面上成熟的即时通讯预算又略显不足,干脆自己开发一个也能应对简单的业务场景。 实现流程1、服…

数据智仓功能介绍(二)

界面介绍 访问入口 具备权限的人员从系统管理后台进入界面,点击数据智仓,右侧是展示系统中已经配置的数据集。 数据集展示界面 如下图所示,系统中已经配置的数据集包含 数据集名称,修改人员,上次运行时间&#xff08…

matlab智能算法之遗传算法

智能算法之遗传算法智能算法之遗传算法1.背景2.算法3.案例3.1 案例求解二元函数的最大值智能算法之遗传算法 1.背景 2.算法 3.案例 3.1 案例求解二元函数的最大值 例1:计算二元函数f(x,y)20x2y2−10∗(cos(2πx)cos(2πy))f(x,y)20x^2y^2-10*(cos(2\pi x)cos(2…

[附源码]Node.js计算机毕业设计大学生健康系统Express

项目运行 环境配置: Node.js最新版 Vscode Mysql5.7 HBuilderXNavicat11Vue。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等等。 环境需要 1.运行环境:最好是Nodejs最新版,我…

Qt扫盲-QToolButton 理论总结

QToolButton 理论总结1. 概述2. 使用场景3. 外观样式4. 菜单用途1. 概述 ToolButton 是一种特殊按钮,用于快速访问 特定命令或选项。与普通PushButton 按钮常用显示内容不同,ToolButton 通常不显示文本标签,而是显示图标。当然,也…