docker搭建 java web服务

news2025/1/13 13:47:17

安装 Docker

只需通过以下命令即可安装 Docker 软件:

>> rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
>> yum -y install docker-io

可使用以下命令,查看 Docker 是否安装成功:

docker version

若输出了 Docker 的版本号,则说明安装成功,我们下面就可以开始使用 Docker 了。

可通过以下命令启动 Docker 服务:

service docker start

下载镜像

docker中文网

  • 下载centOS镜像
    此处拉取的仓库为centos7.9.2009版本
docker pull centos:7.9.2009

在这里插入图片描述

  • 查看本地所有镜像
docker images

在这里插入图片描述

启动容器

docker run -i -t -v /www/server/box/docker/repository/boo/:/mnt/software/ eeb6ee3f44bd /bin/bash
  • docker run <相关参数> <镜像 ID> <初始命令>
    初始命令表示一旦容器启动,需要运行的命令,此时使用“/bin/bash”,表示什么也不做,只需进入命令行即可。
参数解释
-i表示以“交互模式”运行容器
-t表示容器启动后会进入其命令行
-v表示需要将本地哪个目录挂载到容器中,格式:-v <宿主机目录>:<容器目录>

在这里插入图片描述
此时容器已经启动并进入了容器的命令行

安装相关软件

以下操作均在容器内进行

安装tomcat

可以将tomcat文件放到宿主机的*/www/server/box/docker/repository/boo/目录下:
在这里插入图片描述
对应的,容器中
/mnt/software/tomcat/* 目录下就会有这个文件(挂载关系):

在这里插入图片描述
然后解压tomcat文件… 不再赘述

安装jdk

这里从官网下载的8版本的解压版
下载地址: https://www.oracle.com/java/technologies/downloads/

下载解压后配置环境变量

配置环境变量
  • 修改系统配置文件:
vi /etc/profile

将以下内容加入profile文件末尾:

# jdk环境变量路径
export JAVA_HOME=/data/read_business_world/jdk/jdk1.8.0_151
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib:$CLASSPATH
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=$PATH:${JAVA_PATH}
  • 保存配置成功后,使文件生效:
source /etc/profile
  • 查看jdk版本
    在这里插入图片描述

编写运行脚本

编写一个运行脚本,当启动容器时,运行该脚本,启动 Tomcat,具体过程如下:

  • 首先,创建运行脚本:
vi /root/run.sh

脚本内容如下:

sh /home/server/tomcat/bin/catalina.sh run

注意:使用 Tomcat 的运行脚本来启动 Tomcat 服务。

  • 最后,为运行脚本添加执行权限:
chmod u+x /root/run.sh

退出容器

使用 exit命令退出容器
在这里插入图片描述

  • 查看正在运行的程序
docker ps

因为刚才已经使用exit命令退出容器,此时容器处于停止状态,所以看不到

  • 查看所有容器
docker ps -a

在这里插入图片描述
记住以上CONTAINER ID(容器 ID),随后我们将通过该容器,创建一个可运行 Java Web 的镜像。

创建javaWeb镜像

docker commit 05fcf4ef548b boo/javaweb:0.1

格式为 docker commit boo/javaweb:0.1
在这里插入图片描述
创建完成后使用 docker images 命令查看当前系统中所有镜像
在这里插入图片描述

启动 Java Web 容器

与上边的启动容器相同

  • 查看所有镜像:
[root@localhost docker]# docker images
REPOSITORY       TAG    IMAGE ID       CREATED             SIZE
boo/javaweb      0.1    7fd8bf88f779   About an hour ago   594MB
  • 启动容器
    这次我们不进入容器的命令行,而是直接启动容器内部的 Tomcat 服务(运行 /root/run.sh脚本):
docker run -d -p 58080:8080 --name booWeb boo/javaweb:0.1 /root/run.sh
参数解释
-d表示以“守护模式”执行/root/run.sh脚本,此时 Tomcat 控制台不会出现在输出终端上
-p表示宿主机与容器的端口映射,此时将容器内部的 8080 端口映射为宿主机的 58080 端口,这样就向外界暴露了 58080 端口,可通过 Docker 网桥来访问容器内部的 8080 端口了。
–name表示容器名称,自定义一个有意义的名称即可

运行报错
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "/root/run.sh": permission denied: unknown.
在这里插入图片描述
宿主机的当前运行用户和docker容器里面的运行用户不一致导致的访问权限问题
解决:
添加 --privileged=true

docker run --privileged=true -d -p 58080:8080 --name booWeb boo/javaweb:0.1 /root/run.sh
  • 查看运行中的容器
docker ps

特权模式运行

docker run --name boo-web --privileged=true -d boo/javaweb:0.1 /usr/sbin/init

在这里插入图片描述

进入容器:
docker exec -it boo-web /bin/bash

在这里插入图片描述

常用命令

操作镜像(images)

docker images : 查看本地镜像
docker rmi : 删除镜像

操作容器

docket ps : 查看运行中的容器
docket ps -a : 查看所有的容器

docker run xxx : 创建容器
docker start <NAMES / CONTAINER ID> : 运行容器
docker stop <NAMES / CONTAINER ID> : 停止容器
docker rm <NAMES / CONTAINER ID> : 删除容器

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

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

相关文章

SpringMvc源码分析(一):启动tomcat服务器,加载DispatcherServlet并将DispatcherServlet纳入tomcat管理

SpringMvc是主流的MVC框架&#xff0c;它是基于Spring提供的web应用框架&#xff0c;该框架遵循servlet规范。该框架的作用是接收Servlet容器&#xff08;如Tomcat&#xff09;传递过来的请求并返回响应。SpringMvc的核心就是servlet实例&#xff0c;而这个servlet在spring中就…

IB地理科SL和HL课程的区别

今期我们会谈到IB地理科这一科目的标准级别&#xff08;StandardLevel&#xff0c;SL&#xff09;课程和高级级别&#xff08;HigherLevel&#xff0c;HL&#xff09;。 两课程的最大区别:试卷数目和题目数量的不同&#xff0c;但两者的教材内容和科目指引&#xff08;SubjectG…

VTK-不同类型的数据集

前言&#xff1a;本博文主要讲解vtk中不同类型的数据集以及它们之间的关系&#xff0c;如何进行转换等。 目录 vtkImageData vtkRectilinearGrid vtkStructuredGrid vtkUnstructuredPoints vtkPolyData vtkUnstructuredGrid vtkPolyData->vtkImageData vtkPolyData…

Go反射学习

文章目录反射介绍&#xff1a;反射应用点变量-空接口-reflect.Value&#xff08;Type)类型值方法结构体&#xff1a;反射修改变量值反射操作结构体MethodCall反射介绍&#xff1a; 反射是在运行时&#xff0c;动态的获取变量的各种信息&#xff0c;如变量的类型&#xff0c;类…

Springboot中如何优雅的写好Service层代码

前言《Springboot中如何优雅的写好controller层代码》一不小心进入了全站综合热榜&#xff0c;收到了大家热情的支持&#xff0c;非常感谢大家&#xff0c;同时说明大家都有同样一个诉求&#xff0c;想好好写代码&#xff0c;不想给别人挖坑&#xff0c;争取可以早点下班。今天…

【Spring源码】CommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinition()详解

CommonAnnotationBeanPostProcessor的postProcessMergedBeanDefinition()中一共包含3个方法&#xff0c;上篇文章我们介绍了的第一个方法&#xff0c;它一个父类调用&#xff08;如下图&#xff09;&#xff0c;其实就是处理PostConstruct和PreDestroy这两个注解的这篇我们继续…

一起聊聊数据治理

统一赵秦车轨&#xff0c;推行秦篆&#xff0c;统一七国文字&#xff0c;兵器统一标准&#xff0c;统一度量衡… 我们优秀的数据治理专家-秦始皇&#xff01; 数据治理这个名字起得好&#xff0c;一般人听不懂&#xff0c;实际上并不是IT人员的专属&#xff0c;广义上来说我们日…

纳米软件分享:为什么要进行电池充放电测试?电池充放电系统测试步骤

在日常生活中电能一直是我们接触过的最为方便的能源&#xff0c;而我们也通过各种方法对电能进行储存从而让我们能随时随地的使用这种能源&#xff0c;比如手机中的锂电池、电动车中的充电电池等。 充电锂电池经过多年的技术革新&#xff0c;综合性能不断提升&#xff0c;已经应…

基于node.js和Vue的食堂窗口美食评价系统/美食网站

摘要本论文主要论述了如何使用Node.js语言开发一个食堂窗口美食评价系统&#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述食堂窗口美食评价系统的当前背景以及系…

【高级人工智能】国科大《高级人工智能》联结主义 笔记 + 考试回忆

国科大《高级人工智能》吴老师部分——联结主义笔记 吴老师上课dddd&#xff0c;上课东西太多太杂&#xff0c;听不太懂比较煎熬&#xff0c;但是课后花点时间理解理解&#xff0c;还是挺有帮助的考试按照重点复习即可&#xff0c;虽然答疑时提到的传教士野人没考&#x1f605;…

神经网络、激活函数

目录1.双层神经网络计算神经网络层数的时候不包括输入层。2.逻辑回归的神经网络如何实现隐藏单元如何计算&#xff1f;&#xff0c;3x1矩阵&#xff0c;3x1矩阵,上标[1]表示第一层向量化(单个训练样本):隐藏层&#xff1a;&#xff0c;&#xff0c;为4x3矩阵&#xff0c;x为3x1…

spring cloud gateway 整合sentinel使用过程使用遇到的问题

最近在进行spring cloud gateway 整合 sentinel 在此过程中遇到的问题进行汇总 1. spring gateway 整合sentinel gateway的路由会自动加一个前缀 效果如下 问题原因 代码在 org.springframework.cloud.gateway.discovery.DiscoveryClientRouteDefinitionLocator#DiscoveryClie…

【迅为iMX6Q】开发板 Linux 5.15.71 RTL8211E 以太网驱动适配

相关参考 【迅为iMX6Q】开发板 u-boot 2022.04 SD卡 启动 【迅为iMX6Q】开发板 u-boot 2020.04 RTL8211E 以太网驱动适配 【迅为iMX6Q】开发板 Linux 5.15.71 SD卡 启动 开发环境 win10 64位 VMware Workstation Pro 16 ubuntu 22.04 -【迅为imx6q】开发板&#xff0c;…

【学习笔记】【Pytorch】三、常用的Transforms

【学习笔记】【Pytorch】三、常用的Transforms学习地址主要内容一、Transforms模块介绍二、transforms.ToTensor类的使用1.使用说明2.代码实现三、transforms.Normalize类的使用1.使用说明2.代码实现四、transforms.Resize类的使用1.使用说明2.代码实现五、transforms.Compose类…

IIC协议初识及OLED写入指令、数据和显示的代码实现

目录 一、IIC协议概述 二、IIC协议起始和终止信号 三、应答信号 四、数据发送的时序 五、OLED写入指令和数据 六、OLED显示一个点的思路 七、OLED显示一个点的代码 八、OLED列地址 九、OLED显示图片 一、IIC协议概述 1、IIC概述 IIC&#xff08;集成电路总线&#…

UI设计师与UE设计师有什么区别?

设计在我们的生活中扮演着重要的角色&#xff0c;但是面对越来越多的专业术语和相近的岗位职责&#xff0c;人们总是困惑&#xff1a;明明是差不多的岗位&#xff0c;为什么要整那么多的词&#xff1f;其实&#xff0c;在它们神似的外表下&#xff0c;潜藏着巨大的差异&#xf…

虹科分享 | 实时操作系统INtime RTOS第7版功能更新介绍

INtime简介 INtime是专为基于PC的嵌入式解决方案而设计的可扩展实时操作系统&#xff0c;功能包括动态控制多个主机上多个节点&#xff08;核心&#xff09;上的进程&#xff0c;以及系统所有节点之间的丰富进程间通信&#xff0c;可应用于多核x86兼容处理器的非对称多处理(AM…

【阶段三】Python机器学习17篇:机器学习项目实战:随机森林回归模型

本篇的思维导图: 项目实战(随机森林回归模型) 项目背景 作为国家的支柱产业,房地产的稳定发展关乎国际民生。近几年,房地产价格飞速上涨,连创新高。在这种情况下研究房价的影响因素,具有重要的理论和现实意义。弄清影响房价的主要经济因素,探究我国房地产投资是…

calc()方法的使用

calc实现css中动态计算 环境 根据元素高度的变化,动态控制padding值 <marquee:name"up index"behavior"scroll"scrolldelay"30"direction"up"v-else-if"item.scrollPocition 3 ? true : false":style"{--positi…

核心乐理---五线谱基础

音符 音符的长度 音符的长度都是相对的定义 一般来说讲全音符设为一拍&#xff0c;但如果将二分音符设为一拍的话&#xff0c;全音符就是两拍 附点音符 可以在音符后跟上一个小点来改变音符的长度&#xff0c;如果一个音符后面跟了n个原点&#xff0c;它的长度就会变为原来的…