从虚拟机安装CentOS到自定义Dockerfile构建tomcat镜像

写在开头
整个过程中涉及的三方软件均来源于三方的官网,因此需要有一个稳定良好的访问公网网络的环境,可能需要科学上网

下载并安装 VMware Workstation Player

  • 下载
    需要先注册登录:https://login.broadcom.com/signin
    下载页面:https://support.broadcom.com/group/ecx/downloads
    在这里插入图片描述
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/0dfca828973f4efca8ad07855944dc78.png
  • 安装
    比较简单,略

下载并安装CentOS7.9

  • 下载
    阿里云开源镜像站下载地址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/
    在这里插入图片描述
    根据自身需要选择一个版本,我这边选了一个最小化的安装版本

  • 安装
    安装过程中注意几点:
    1.语言选择中文简体或英文
    2.网络一般选择桥接模式
    3.分区的话boot不要太小,500M够用
    4.设置一个root密码

配置网络使可访问公网

  • 修改配置文件/etc/sysconfig/network-scripts/ifcfg-ens33
    将ONBOOT=no改为ONBOOT=yes
  • 重启虚拟机网络service network restart
    以上完成后,因为安装过程中选了桥接模式,所以虚拟机和宿主机的网络是通的,只要宿主机连接上公网,虚拟机就可以访问公网。

配置yum源使可安装软件

  • 参考https://zhuanlan.zhihu.com/p/579846712
    在这里插入图片描述
    注意:因为之前CentOS安装的是minimal版本,所以没有wget命令,这里第四步要把wget替换成curl命令

至此,虚拟机已安装完,并且可访问公网,可安装一些列常用软件、命令了,比如vim、wget、net-tools等等

安装Docker

  • 参考CentOs中docker、docker-compose、docker-machine安装

准备构建Tomcat镜像

  • 下载Tomcat
    Tomcat官网
    在这里插入图片描述
  • 下载JDK
    Oracle官网 注意:要先注册登录才可以下载
    在这里插入图片描述
    历史版本下载页面
    在这里插入图片描述
  • 拉取操作系统基础镜像
    目前直接执行docker pull centos:7.9.2009是无法从Docker Hub拉取到镜像的,即使配置了阿里云、中科大、清华、网易等的加速器也不行,所以还需要再迂回一下。本人在github上找到一个方案,这里分享给大家

自定义Dockerfile

历经磨难,终于可以编写Dockerfile了,Dockerfile直接贴出来吧

FROM centos:7.9.2009
MAINTAINER xxxCOPY ./jdk1.8.0_192 /usr/local/
COPY ./apache-tomcat-7.0.61 /usr/local/ENV MYPATH /usr/local
WORKDIR $MYPATHENV JAVA_HOME /usr/local/jdk1.8.0_192
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-7.0.61
ENV CATALINA_BASE /usr/local/apache-tomcat-7.0.61
ENV PATH $PATH:$JAVA_HOME/bin:$CLASSPATH:$CATALINA_HOME/lib:$CATALINA_HOME/binEXPOSE 8080CMD /usr/local/apache-tomcat-7.0.61/bin/startup.sh && tail -f /usr/local/apache-tomcat-7.0.61/logs/catalina.out

说明:Dockerfile与前面下载的tomcat、jdk放在一个目录下,并且注意COPY指令后的src路径是tomcat、jdk解压后的~

docker build后可以run一下看看效果~

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

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

相关文章

7-23 还原二叉树

代码&#xff1a; #include<iostream> using namespace std; int n; char a[55],b[55]; int dfs(int l,int r,int x,int y){ // printf("**l%d,r%d,x%d,y%d\n",l,r,x,y);if(l>r) return 0; // if(lr) return 1;int i;for(ix;i<y;i){if(a[l]b[i]) break;…

信息安全工程师(6)网络信息安全现状与问题

一、网络信息安全现状 威胁日益多样化&#xff1a;网络攻击手段不断翻新&#xff0c;从传统的病毒、木马、蠕虫等恶意软件&#xff0c;到勒索软件、钓鱼攻击、DDoS攻击、供应链攻击等&#xff0c;威胁形式多种多样。这些攻击不仅针对个人用户&#xff0c;还广泛影响企业、政府等…

【OJ刷题】双指针问题5

这里是阿川的博客&#xff0c;祝您变得更强 ✨ 个人主页&#xff1a;在线OJ的阿川 &#x1f496;文章专栏&#xff1a;OJ刷题入门到进阶 &#x1f30f;代码仓库&#xff1a; 写在开头 现在您看到的是我的结论或想法&#xff0c;但在这背后凝结了大量的思考、经验和讨论 目录 1…

Mac下nvm无法安装node问题

背景 最近换用mac开发&#xff0c;然后使用nvm&#xff08;版本0.40.1&#xff09;进行node安装的时候出现了一些问题 使用 nvm ls-remote发现只有 iojs 版本 原因可能是nodejs升级了某个协议导致的 解决方案 可以使用 NVM_NODEJS_ORG_MIRRORhttp://nodejs.org/dist nvm ls-re…

关于一道逻辑思维训练题的理解(手表、闹钟、标准时间的骗局)

说有一块手表&#xff0c;比闹钟每时慢30秒&#xff0c;而闹钟比标准时间每时快30秒&#xff0c;那么&#xff0c;这块手表是准时的么 &#xff1f; 这道题就是个带时间刻度的四维骗局 就是个文字游戏 接下来我们来分析一下&#xff0c;为什么说它是个骗局&#xff0c;简直与…

初写MySQL四张表:(3/4)

我们已经完成了四张表的创建&#xff0c;学会了创建表和查看表字段信息的语句。 初写MySQL四张表:(1/4)-CSDN博客 初写MySQL四张表:(2/4)-CSDN博客 接下来&#xff0c;我们来学点对数据的操作&#xff1a;增 删 查&#xff08;一部分&#xff09;改 先来看这四张表以及相关…

Java入门,初识Java

Java背景知识 Java是早期美国 sun 公司&#xff08;Stanford University Network&#xff09;在1995年推出的一门计算机高级编程语言。Java早期称为Oak&#xff08;中文翻译为&#xff1a;橡树&#xff09;&#xff0c;后期改名为Java。&#xff08;因为当时sun公司门口有很多…

【Linux系统编程】用互斥量和信号量加锁STL容器,避免并发问题

目录 引言 容器模型 容器代码 个人主页&#xff1a;东洛的克莱斯韦克-CSDN博客 引言 STL容器并没有保证线程安全&#xff0c;而大多数应用场景下&#xff0c;为了追求效率&#xff0c;多线程是必不可少的。而底层容器难免会有并发问题。从设计上来说要么在上层代码做加锁处…

Effective C++笔记之二十三:非void函数不写return

一.main函数 Qt Creator查看汇编的步骤如下 上图是g编译器下的汇编 eax就是main()函数的返回值 如果删掉return 0&#xff1b; 可以发现编译器还是把eax的值设为了0&#xff0c;由此可见&#xff0c;即使在main函数中不写return 0&#xff0c;编译器还是会默认添加个return 0。…

如何使用ssm实现一家运动鞋店的产品推广网站的设计

TOC ssm623一家运动鞋店的产品推广网站的设计jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xf…

手把手教你:在微信小程序中加载map并实现拖拽添加标记定位

本文将为大家详细介绍如何在微信小程序中加载map组件&#xff0c;并实现拖拽标记定位功能。 实现步骤 1、首先&#xff0c;我们需要在项目的app.json文件中添加map组件的相关配置。如下所示&#xff1a; {"pages": ["pages/index/index"],"permiss…

【网络安全 | 代码审计】PHP无参数RCE

未经许可,不得转载。 文章目录 无参数RCE代码审计1、利用Session ID实现无参数RCE2、利用get_defined_vars ()函数实现无参数RCE3、利用getallheaders()实现无参数RCE4、利用getenv()实现无参数RCE5、利用scandir()实现无参数RCE靶场实例无参数RCE 一般情况下,RCE需要通过传…

销管系统 —— P14 菜单项悬停高亮显示遇到的问题

悬停在子菜单背景颜色并没有显示&#xff0c;为什么&#xff1a; 什么是后代选择器 —— 选中父元素 后代中 满足条件的元素&#xff1b;这个子菜单menu—item它既满足上面的也满足下面的&#xff0c;按这个顺序的话&#xff0c;下面的就被覆盖了&#xff08;CSS优先级规则&…

godot——tween_method插值,如何处理多参数?参数位置怎么调?

知识点&#xff1a; tween_method()可以对方法的某一参数进行插值&#xff0c;并连续调用该方法。 如果方法有多个参数&#xff0c;可以用bind()提前绑定。 然而bind()绑定的参数会被放在参数列表的最后。如果我要插值的参数在参数列表后面&#xff0c;那么就会出问题。 …

FPGA-Vivado-IP核-虚拟输入输出(VIO)

VIO IP核 背景介绍 Vivado中的VIO&#xff08;Virtual Input/Output&#xff0c;虚拟输入/输出&#xff09; IP核是一种用于调试和测试FPGA设计的IP核。当设计者通过JTAG接口与FPGA芯片连接时&#xff0c;在Vivado的Verilog代码中添加VIO IP核&#xff0c;就可以让设计者与FPG…

从index_put出发全面学习cuda和pytorch技术

一 前言 深感目前对于cuda和pytorch所涉及知识的广度和深度,但一时又不知道该如何去学习,经过多日的考虑,还是决定管中窥豹,从一个算子出发,抽丝剥茧,慢慢学习,把学习中碰到的问题都记录下来,希望可以坚持下去。 二 函数功能描述 【torch算子】torch.index_put和tor…

LeetCode[简单] 283.移动零

给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 思路&#xff1a;利用快慢指针&#xff0c;快指针遍历数组&#xff0c;慢指针是非零元素索…

VMWare中的Centos8:Errors during downloading metadata for repository ‘appstream‘

在VMWare的环境中&#xff0c;安装和部署好Centos8&#xff0c;待设置好网络环境后&#xff0c;安装部署C开发和编译环境&#xff0c;遇到报错&#xff1a; dnf gcc gcc-c -y 解决问题的办法如下, 1. 进入仓库源文件夹&#xff1a;cd /etc/yum.repos.d/ 2. 修改镜像配置{这…

[Python可视化]数据可视化在医疗领域应用:提高诊断准确性和治疗效果

随着医疗数据的增长&#xff0c;如何从庞大的数据集中快速提取出有用的信息&#xff0c;成为了医疗研究和实践中的一大挑战。数据可视化在这一过程中扮演了至关重要的角色&#xff0c;它能够通过图形的方式直观展现复杂的数据关系&#xff0c;从而帮助医生和研究人员做出更好的…

鸿蒙开发之ArkUI 界面篇 二

鸿蒙App开发使用的是ArkUI(方舟开发框架)&#xff0c;构建页面最小的单位是“组件” “组件”分为基础“组件”和“容器组件”&#xff0c;基础“组件”像Image、Text、Button&#xff0c;“容器组件”像Row、Column&#xff0c;布局的思路&#xff0c;先有大框架、排版&#…