系统环境:centos7.7 (VMware中)

  image版本:tomcat:8-jdk8-openjdk (截止2020.01.10该系列版本)

  安装步骤参考文章:https://www.jianshu.com/p/d053573ffab1

  1、docker search tomcat 查看版本总感觉不太直观,可以去官网查找想要的版本 https://hub.docker.com/_/tomcat?tab=tags&page=1 ,然后使用docker pull tomcat:对应版本号 安装,安装最新可以直接使用 docker pull tomcat。

  

  2、docker images 查看已经安装的镜像。

  

  3、启动一个tomcat容器,并命名为 test_tomcat 。

  

  4、查看启动的docker tomcat 容器。在(2020.1.5号以前)浏览器中输入ip:端口号应该是可以访问到tomcat管理页面的,但是最新版本的docker tomcat镜像运行后的容器竟然都不可以,即使最新版本的tomcat:latest也不行,下面我将为大家介绍处理方式。

  

  (2020.01.05以前)的镜像运行tomcat容器后访问应该是下面的页面

  

  但(2020.01.05)后的所有版本tomcat镜像启动容器后访问是下面这样的。

  

  这是为什么呢?下面介绍为什么。

  5、创建linux宿主机文件夹用于存储tomcat容器中复制出来的配置文件。

  

  6、进入docker tomcat查看目录。命令 docker exec -it 容器名字(或容器container id) bash。此处推荐用容器名字(如上面命名的容器名字test_tomcat)方便书写。默认进入容器的 /usr/local/tomcat 文件夹,这里注意几个文件夹后面会用到,一个是conf,一个是webapps。我们进入conf,然后查看里面有哪些文件,注意tomcat-users.xml是我们要复制的。  

    然后我们切换进webapps文件夹,查看里面的文件,竟然是空的!!!里面不应该有manager等文件夹吗??等等,我们看上图,webapps后面怎么多了一个webapps.dist文件夹???以前的版本是没有的!让我们切换进webapps.dist文件夹,查看里面的文件,哇!!!这不是应该在webaspps中的文件吗???(个人猜测:因为docker推荐将webapps下的文件挂载在宿主机下,否则删除tomcat容器的时候服务文件会全部丢失,为了让大家主动将webapps挂载出来,可能维护者将以后的tomcat镜像全部改成webapps为空,需要使用者手动将webapps.dist复制出来并挂载使用)我可能是第一个发现这个版本配置的文章???

  

原文地址:https://www.cnblogs.com/jying/p/12176107.html
作者:一定会去旅行
欢迎任何形式的转载,但请务必注明出处。
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

 7、exit退出容器,并复制tomcat容器配置文件(tomcat-users.xml)和整个webapps.dist文件夹到linux 宿主机。用语句 docker cp 容器配置文件路径 linux宿主机存储路径。

  

  8、停止正在运行的tomcat容器,并删除该容器test_tomcat。

  

  9、修改复制出来的文件。tomcat-users.xml配置权限,/webapps/manager/META-INF/context.xml 配置访问地址和端口等。

    编辑tomcat-usrs.xml,底部</tomcat-users>以内添加如下内容,其中授权访问账号为:tomcat,密码为:tomcat.2019

  <role rolename="manager-gui" />
<role rolename="manager-script" />
<role rolename="manager-status" />
<role rolename="manager-jmx" />
<user username="tomcat" password="tomcat.2019" roles="manager-gui,manager-script,manager-status,manager-jmx" />

  

    切进/webapps/manager/META-INF文件夹,编辑里面的context.xml文件,将以下内容注释掉。  

  

<!-- <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> -->

  10、重新运行一个tomcat容器,并挂载本地的配置文件到容器对应文件。  

docker run -dit --name my_tomcat_2020 -p 8081:8080 --restart=always -e TZ="Asia/Shanghai" -v /etc/localtime:/etc/localtime:ro -v /www/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml -v /www/tomcat/webapps:/usr/local/tomcat/webapps tomcat:8-jdk8-openjdk

参数解析:
-d 后台运行容器,并返回容器ID;
--name 为容器起一个容易区分且容易书写的名字
-p 映射宿主机端口到容器端口,宿主机端口:容器端口
--restart=always 机器重启时自动启动容器
-e       设定一些必须的环境变量。本例子中 -e TZ="Asia/Shanghai" 设定时区为上海,强烈建议国内设定,否则容器内打印的所有日志时间都会差8小时。
-v       挂载宿主机文件到容器。本例三个分别为:
          -v /etc/localtime:/etc/localtime:ro 挂载宿主机时间,保持容器时间正确。
          -v /www/tomcat/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml 挂载宿主机配置文件到容器。
          -v /www/tomcat/webapps:/usr/local/tomcat/webapps 挂载宿主机/webapps到容器。 更多配置参数含义请参考:https://blog.csdn.net/qq_19381989/article/details/102781663

  

  11、重新访问ip:8081,便可以访问页面啦,manager也可以进去~~

    

  12、配置完成~~

  

  

centos7一步一步搭建docker tomcat 及重点讲解的更多相关文章

  1. centos7一步一步搭建docker nginx 及重点讲解

    系统环境:centos7.7 (VMware中) images版本:nginx:latest (截止2020.01.10最新版) 1.拉取镜像 docker pull nginx 2.启动nginx容 ...

  2. 在CentOS7下从0开始搭建docker并发布tomcat项目

    一切从0开始,我也是个小白: 1.检查你的系统是不是高于3.8的内核,如果没有请升级CentOS7或者Ubuntu 14 #uname -a 2.CentOS7下安装docker #yum -y in ...

  3. CentOS7下使用Sonatype Nexus3搭建Docker私有仓库

    相关资料: Sonatype Nexus3官方网站:https://www.sonatype.com/download-oss-sonatype Sonatype Nexus3 Docker Hub地 ...

  4. 一步一步配置docker(tomcat+jenkins+phpmyadmin+nginx)

    经过半个月的docker学习实践,今天对自己的学习成果做个总结. 貌似官方推荐的是docker compose使用DockerFile 来配置,但目前还没学习使用docker compose,先学习通 ...

  5. 一步一步搭建Jenkins环境

    Jenkins使用经验谈1(一步一步搭建Jenkins环境)在公司使用 Jenkins 软件已经有一段时间了,走了很多弯路,但也积累了一些经验,可以和大家分享一下.我们来一起搭建Jenkins环境.首 ...

  6. 【Linux】一步一步学Linux——Centos7.5安装图解(08)

    00. 目录 参考博客:https://mp.csdn.net/mdeditor/95031775# 01. Centos7.5简介 CentOS(Community Enterprise Opera ...

  7. 一步一步使用ABP框架搭建正式项目系列教程之本地化详解

    返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...

  8. 一步一步了解Cocos2dx 3.0 正式版本开发环境搭建(Win32/Android)

    cocos2d-x 3.0发布有一段时间了,作为一个初学者,我一直觉得cocos2d-x很坑.每个比较大的版本变动,都会有不一样的项目创建方式,每次的跨度都挺大…… 但是凭心而论,3.0RC版本开始 ...

  9. 一步一步教你编写与搭建自动化测试框架——python篇

    [本文出自天外归云的博客园] 这两天用python写了一个自动化测试框架,取名为Auty.准备用来做Web方面的接口测试,以下为Auty框架一步一步的搭建过程——

随机推荐

  1. eclipse debug启动时tomcat报错

    Class.getDeclaredConstructors0(boolean) line: not available [native method] tomcat  debug启动突然启动不起来 停 ...

  2. Pikachu练习平台(暴力破解)

    Pikachu练习平台(暴力破解) 因为下面要用到burp suite,这里先简单介绍一下intruder模块的东西 Target选项:        设置攻击目标,可以通过proxy发送 Pasit ...

  3. sql避免科学计数法并保留两位小数

    SELECT trim(to_char(), ), ,), '9999,999,990.00')) AS CAvgPrice FROM POSITION a 结果: 以trim(to_char(ROU ...

  4. Flink架构(三)- 事件-时间(Event-Time)处理

    3. 事件-时间(Event-Time)处理 在“时间语义”中,我们强调了在流处理应用中时间语义的重要性,并解释了处理时间与事件时间的不同点.处理时间较好理解,因为它基于本地机器的时间,它产生的是有点 ...

  5. NOIP做题练习(day1)

    A - Xenny and Alternating Tasks 题面 题解 枚举第一天是谁做,将两个答案取\(min\)即可. 代码 #include <iostream> #includ ...

  6. Linux - 文件时间戳

    概述 简介 linux 文件时间戳 背景 最近感觉很消极的样子 心情不好加不知道写啥 随便水一水 能水的就那么多, 水一次, 少一次 环境 os centos7 1. 时间戳 概述 简述 时间戳 li ...

  7. vue 项目太大, 导致 javascript heap out of memory

    原因: node 环境, 对单个进程的内存是有限制的, 但是现在前端项目太大, 所以我们需要根据当前机器环境, 手动加大node的内存限制 安装包 npm i increase-memory-limi ...

  8. 10day 系统安全优化

    系统安全相关优化(将一些安全服务进行关闭) 1. 防火墙服务程序 centos6 查看防护墙服务状态 /etc/init.d/iptables status 临时关闭防火墙服务 /etc/init.d ...

  9. 吴裕雄 python 机器学习——数据预处理标准化StandardScaler模型

    from sklearn.preprocessing import StandardScaler #数据预处理标准化StandardScaler模型 def test_StandardScaler() ...

  10. 洛谷P1130红牌(简单DP)

    题目描述 某地临时居民想获得长期居住权就必须申请拿到红牌.获得红牌的过程是相当复杂 ,一共包括NNN个步骤.每一步骤都由政府的某个工作人员负责检查你所提交的材料是否符合条件.为了加快进程,每一步政府都 ...