centos8安装docker运行java文件
本文由个人总结,如需转载使用请标明原著及原文地址
这里是基于我前一篇搭的centos8服务器做的,如果yum baseos源或appstream源有问题可以去看看前一篇
https://blog.csdn.net/qq_36911145/article/details/129263830
1.安装docker
1.1配置docker yum源
在 /etc/yum.repos.d目录下创建docker.repo文件,并写入阿里的docker源
cd /etc/yum.repos.d
vi docker.repo
docker.repo文件里写入的内容,这里我用的是8.0版本的所以就用这个地址,不同版本可以到https://mirrors.aliyun.com/docker-ce/linux/centos找自己的版本,这个配置有一定的通用性,其实不用很精确的匹配
[docker]
name=docker-ce
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/8.0/x86_64/stable/
gpgcheck=0
enabled=1
1.2安装docker
yum install docker-ce
输入y继续安装
安装完成后可以用docker -v 命令查看
1.3启动docker
systemctl start docker
1.4设置docker开机自启
systemctl enable --now docker
重启服务器验证docker开机自启是否生效
systemctl status docker
1.5配置docker国内镜像源(可不配)
创建或修改daemon.json文件
vi /etc/docker/daemon.json
可配置多个,我这提供的1.网易 2.中国科技大学 3.docker中国区官方镜像
{"registry-mirrors": ["http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com"]
}
然后重启docker服务用docker info查看
systemctl restart docker
docker info
2.docker容器使用
2.1查找docker镜像
https://hub.docker.com/
在搜索框内输入你要查找的镜像,我这要跑个简单的java项目,所以搜java的
2.2下载镜像
找到需要的镜像后,复制指令,在服务器上输入,就能下载到对应的镜像
docker pull java:openjdk-8u111-jre-alpine
alpine是linux一个极简的系统,比centos小了不是一点两点,所以我特意去找了个alpine系统的jdk镜像来用,和网上常用的java:8镜像对比,这四舍五入差了一个亿
2.3简单docker容器的创建及启动报错解决
2.3.1 docker run命令
这是正常运行和解决问题的步骤,不想走弯路就按2.3.2->2.3.3->2.3.1的顺序看,但我觉得学习解决问题的思路更重要点
创建并运行容器用到docker run命令下面是常用的一些参数
-i | 以交互模式运行容器,通常与 -t 同时使用 |
-t | 启动容器后,为容器分配一个命令行,通常与 -i 同时使用 |
-d | 守护进程,后台运行该容器 |
--name | 给容器命名,2个“-” |
-p | 端口映射 -p 宿主机端口:容器端口 |
对其他参数感兴趣可以看这https://blog.csdn.net/qq_45547688/article/details/125785419
docker run -itd --name demo1 -p 8091:8091 java:openjdk-8u111-jre-alpine /bin/sh
格式是:docker run 参数 使用的镜像 执行的命令
我这用的是alpine系统所以执行的是/bin/sh如果是centos的镜像应该是/bin/bash
2.3.2 runc报错
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/moby/ad47b82ed6d9d6daafb5b079694c2bc5af0fd0f4607711a0b28eb52c3d8cbf0f/log.json: no such file or directory): runc did not terminate successfully: exit status 127: runc: symbol lookup error: runc: undefined symbol: seccomp_api_get
: unknown.
这时报错了,大致意思就是runc出问题了,那我们就来看下runc,输入runc或者runc -v回车
runc
这时报了这个错,通过网上查找,原因是没有安装libseccomp-devel
runc: symbol lookup error: runc: undefined symbol: seccomp_api_get
2.3.3安装libseccomp-devel
yum install libseccomp-devel
一般装完libseccomp-devel就行了,我另一台服务器装libseccomp-devel报了另一个错,说libseccomp版本太低导致libseccomp-devel不能装最新的,那么就给他更新下
如果libseccomp-devel能正常安装,就不用执行这个了
yum update libseccomp
安装完libseccomp-devel用runc -v查看runc的状态
然后用最开始的docker run指令创建并运行容器
docker ps可以查看当前启动的容器,docker ps -a可以查看所有容器,包括新创建和未启动的那些
2.4docker容器的简单使用
docker start 容器名 | 启动docker容器 |
docker stop 容器名 | 停止docker容器 |
docker restart 容器名 | 重启docker容器 |
docker exec -it 容器名 执行命令 | 进入到docker容器内 |
前三个没啥好说的,第四个举个栗子如下,-i 展示容器输入信息STDIN,-t 命令行交互模式,alpine执行/bin/sh,centos执行/bin/bash
docker exec -it demo1 /bin/sh
这个样子就是进到容器内部了,docker容器就是个服务器,你在你宿主机上能做的事里面都能做
玩腻了想出来就输入exit出来
exit
3.运行java文件
3.1使用dockerfile运行java文件
3.1.1创建dockerfile
首先创建个文件夹并进入,用cp命令将要运行的jar包复制过来
接着用vi创建dockerfile文件,并写入内容
mkdir /usr/local/docker-tmp2
cd /usr/local/docker-tmp2
cp /usr/local/docker-tmp/demo1.jar /usr/local/docker-tmp2/demo1.jar
vi demo2.dockerfile
dockerfile里的内容
# 使用的基础镜像
FROM java:openjdk-8u111-jre-alpine
# 将java文件拷进docker容器,第一个路径是宿主机路径,第二个是docker容器内路径,文件最好放在dockerfile同级或子级路径
ADD demo1.jar /usr/local/demo1.jar
# 开放的端口
EXPOSE 8091
# 容器运行后执行的命令,这里用CMD也行
ENTRYPOINT ["java","-jar","/usr/local/demo1.jar"]
3.1.2通过dockerfile创建docker镜像
写好dockerfile文件后用docker build创建docker镜像
-f 指定用于生成镜像的dockerfile文件
-t 给新创建的镜像命名,可以直接是名字,或者加冒号,冒号后加版本号
最后的空格和点(“ .”)一定要加,dockerfile构建镜像时是以docker引擎中展开的构建上下文中的文件,最后的点是指定镜像构建过程中的上下文环境为当前目录,像demo1.jar指的就是当前目录下的demo1.jar
docker build -f demo2.dockerfile -t java-project:1.0 .
3.1.3通过docker镜像创建容器
docker run -itd --name demo3 -p 8091:8091 java-project:1.0 /bin/sh
我的java项目用的是8091端口,这里将容器的8091端口映射到宿主机的8091端口上了,这时就可以通过访问宿主机的8091端口的方式来访问java项目了
访问不到可能是宿主机端口没开,自己开下
3.2麻烦的集聚各种冷门知识的运行java项目方法
这个是我用2.4的方法创建容器后,想怎么用现有容器改造成自启java的容器,研究了很多东西得出来的方法,虽然能用,但是没必要!!!!但是学到了很多docker的知识倒是真的,憨实基础有用,只是为了运行java没必要!!!!!
3.2.1将jar包拷到容器内
继续用2.4创建的容器来运行java
首先把jar包拷进去
方法一:用docker cp命令
docker cp 宿主机文件路径 docker容器名:docker容器路径
如果容器内的目录不存在要先进去创建目录
docker exec -it demo1 /bin/sh
mkdir /usr/local/web
exit
docker cp /usr/local/web/demo1.jar demo1:/usr/local/web/demo1.jar
方法二:找到挂在路径直接传进去
通过docker inspect找到MergedDir目录,这是docker容器在宿主机上存储空间的挂载点,所以在宿主机上的这个目录和docker容器内是互通,传到宿主机这个目录内就等于放到docker容器里了
docker inspect demo1
3.2.2修改容器启动时执行的命令
先关掉docker,不然修改容器配置无效
systemctl stop docker
先要找到docker容器的配置文件,还是用docker inspect,这次找ResolvConfPath,复制到文件夹那层resolv.conf不用
docker inspect demo1
进入到目录中,用vi打开config.v2.json文件
Path | 可执行文件 |
Args | 执行参数 |
Cmd | 启动容器时会执行的命令,如果用户启动容器时候指定了运行的命令,则会覆盖掉CMD指定的命令 |
Entrypoint | 启动容器时会执行的命令,如果用户启动容器时候指定了运行的命令,不会被docker run执行的命令参数覆盖。(追加效果:docker run命令之后的参数,会被当做参数传递给ENTRYPOINT,之后形成新的命令组合) |
这里只是做docker容器启动时自启java项目用Cmd或者Entrypoint都行
我们执行java -jar /usr/local/web/demo1.jar,这里可执行文件是java,-jar和/usr/local/web/demo1.jar是执行java的参数,所以做如下配置,修改完成后保存文件
保存后启动docker服务,然后查看容器配置,这时启动容器后就会自动运行java文件了,可通过映射的端口访问测试
systemctl start docker
docker start demo1
docker inscept demo1
访问不到可能是宿主机端口没开,自己开下
相关文章:
centos8安装docker运行java文件
本文由个人总结,如需转载使用请标明原著及原文地址 这里是基于我前一篇搭的centos8服务器做的,如果yum baseos源或appstream源有问题可以去看看前一篇 https://blog.csdn.net/qq_36911145/article/details/129263830 1.安装docker 1.1配置docker yum…...
Docker容器化部署.net core API
1.为API集成Docker环境。(VS自带,傻瓜式操作) 1.1 点击项目,右键,添加,选择Docker支持 1.2 找到项目根目录中的Dockerfile文件,这是VS刚刚帮我们自动生成的。进入和做如图标红地方修改。 把文…...
springcloud 服务调用feign、熔断hystrix、网关gateway
回归cloud的学习,对于springcloud的架构与原理以及性能的分析我们都在之前的文章里写过:springcloud架构的认识我们之前测试过eureka服务注册功能,它能很好的保存服务之间的通讯关系,是维系微服务通讯网之间的电话本,同…...
《C++ Primer》 第十二章 动态内存
《C Primer》 第十二章 动态内存 动态内存与智能指针 shared_ptr允许多个指针指向同一个对象;unique_ptr则“独占”所指向的对象,weak_ptr指向shared_ptr所管理的对象。这三种类型都定义在memory头文件中。 shared_ptr类:默认初始化的智能…...
多个关键字用or、and、包含、不包含动态拼接为正则表达式和SQL查询条件
目录前言校验思路1、存储方式2、实现图一实现图二实现结果最后前言 不知道大家有没有做过这种需求:在某字符串中,根据多个关键字去判断这串字符串是否满足条件。如下图: 亦或是 如果说要根据图二的关键字去数据库中查询符合条件的数据&a…...
初始Linux操作系统
个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…...
【算法数据结构体系篇class12、13】:二叉树
一、判断二叉树是否是完全二叉树/*** 判断二叉树是否是完全二叉树** //判断层序遍历过程如果节点有右子树 没有左子树 那么就不是完全二叉树* //判断层序遍历过程如果遇到第一个节点是没有左或右子树的,也就是只有一个子节点或者没有,那么再往后层序遍历…...
数字IC手撕代码--联发科(总线访问仲裁)
题目描述当A、B两组的信号请求访问某个模块时,为了保证正确的访问,需要对这些信号进行仲裁。请用Verilog实现一个仲裁器,对两组请求信号进行仲后,要求:协议如图所示,请求方发送req(request&…...
白盒测试复习重点
白盒测试白盒测试之逻辑覆盖法逻辑覆盖用例设计方法1.语句覆盖2.判定覆盖(分支覆盖)3.条件覆盖4.判定条件覆盖5.条件组合覆盖6.路径覆盖白盒测试之基本路径测试法基本路径测试方法的步骤1.根据程序流程图画控制流图2.计算圈复杂度3.导出测试用例4.准备测试用例5.例题白盒测试总…...
学习C++这几个网站足矣
文章目录cppreferencecplusplusquick-bench[C 之父的网站](https://www.stroustrup.com/bs_faq.html)C提案[Cpp Core Guidelines](http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines)[C Super-FAQ](https://isocpp.org/faq)[learn c](https://www.learncpp.com/)[A…...
第十四届蓝桥杯模拟赛(第三期)——C语言版
1.找最小数 问题描述: 请找到一个大于 2022 的最小数,这个数转换成十六进制之后,所有的数位(不含前导 0)都为字母(A 到 F)。 请将这个数的十进制形式作为答案提交。 #include <stdio.h> int main(…...
Flutter Button 实例
大家好,我是 17。 在上篇文章 使用 Flutter Button 介绍了如何修改 button 的样式,本文来具体实践一下。 本文列举一些常用的 button 效果,以便在用到的时候方便使用。因为 ElevatedButton 最常用,所以大多以 ElevatedButton 举…...
好玩的docker项目,盒子刷的海思nas,挂载外接硬盘。qb种子
玩法思路(5条消息) 群晖qb下载,tr辅种_屿兮的博客-CSDN博客_群晖辅种qbittorrent简介及设置_哔哩哔哩_bilibiliqb下载器下载Transmission最好用的BT(PT)下载神器/超简单上手教你在NAS轻松部署/告别简陋三步让你升级全中文最新Web界面(BT下载/PT下载/NAS/…...
RabbitMQ的使用
1.初识MQ1.1.同步和异步通讯微服务间通讯有同步和异步两种方式:同步通讯:就像打电话,需要实时响应。异步通讯:就像发邮件,不需要马上回复。两种方式各有优劣,打电话可以立即得到响应,但是你却不…...
Selenium如何隐藏浏览器页面?
Selenium隐藏浏览器页面 背景 在工作,学习中,我们常常会使用selenium来获取网页上的数据,编完完整程序之后,实现真正意义上的自动化获取,此时我们会发现在运行中往往会弹出浏览器页面,在调试过程中&…...
基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离
基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离 本文想基于Ant DesignPro Vue构建的前端SpringBoot实现的后端接口服务,实现前后端分离开发和独立运行,业务场景是登录认证,认证成功后返回该用户相应权限范围内可见的…...
Acwing---843. n-皇后问题
n-皇后问题1.题目2.基本思想3.代码实现1.题目 n−皇后问题是指将 n 个皇后放在 nn 的国际象棋棋盘上,使得皇后不能相互攻击到,即任意两个皇后都不能处于同一行、同一列或同一斜线上。 现在给定整数 n,请你输出所有的满足条件的棋子摆法。 …...
彻底搞清楚内存泄漏的原因,如何避免内存泄漏,如何定位内存泄漏
作为C/C开发人员,内存泄漏是最容易遇到的问题之一,这是由C/C语言的特性引起的。C/C语言与其他语言不同,需要开发者去申请和释放内存,即需要开发者去管理内存,如果内存使用不当,就容易造成段错误(segment fa…...
自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测
自动驾驶目标检测项目实战——基于深度学习框架yolov的交通标志检测 目前目标检测算法有很多,流行的就有faster-rnn和yolov,本文使用了几年前的yolov3框架进行训练,效果还是很好,当然也可以使用更高版本的Yolov进行实战。本代码使…...
flink兼容性验证
flink介绍:https://blog.csdn.net/weixin_43563705/article/details/107604693 一、安装启动 安装flink及其依赖 yum install java-1.8.0-openjdk curl tar mkdir -p /usr/local/flink wget https://mirrors.aliyun.com/apache/flink/flink-1.16.1/flink-1.16.1-bi…...
智慧工厂数字孪生可视化监测系统有效提升厂区安全管控效力
我国制造业正处于产业升级的关键时期,基于数据进行生产策略制定与管理是大势所趋,而数据可视化以更直观的方式成为数据分析传递信息的重要工具。 深圳华锐视点通过三维可视化手段对工厂各类设备进行三维建模,真实复现设备设施外观、结构、运转…...
c++中基本类型详细解释外加基本运算规则
👀👀#c中包括算数类型和空类型。 类型含义wchat_t宽字符bool布尔类型char字符chat16_tunicode字符chat_32unicode字符short短整型int整形long长整型longlong长整型float单精度浮点型double双精度浮点型longdouble扩展精度浮点型 👀…...
扬帆优配“机器人+”方案加码产业发展,这些股有望高增长
“机器人”发明新需求,2022年中国机器人市场规模约为174亿美元。 美国时刻3月1日,特斯拉在得克萨斯州超级工厂举办投资者日活动,展示了人形机器人Optimus的视频,更夸大的是,视频中的机器人好像在制作另一个机器人&…...
推送投票制作微信推送里投票制作教程在线投票活动制作
近些年来,第三方的微信投票制作平台如雨后春笋般络绎不绝。随着手机的互联网的发展及微信开放平台各项基于手机能力的开放,更多人选择微信投票小程序平台,因为它有非常大的优势。1.它比起微信公众号自带的投票系统、传统的H5投票系统有可以图…...
【架构师】跟我一起学架构——微服务分层监控
博客昵称:架构师Cool 最喜欢的座右铭:一以贯之的努力,不得懈怠的人生。 作者简介:一名Coder,软件设计师/鸿蒙高级工程师认证,在备战高级架构师/系统分析师,欢迎关注小弟! 博主小留言…...
Linux:https静态网站搭建案例
目录介绍httpshttps通信过程例介绍https 整个实验是在http实验基础上进行的 因为http协议在传输的时候采用的是明文传输,有安全隐患,所以出现了https(安全套接字层超文本传输协议) HTTPS并不是一个新协议, 而是HTTP…...
前端css整理
如何水平垂直居中一个盒子? 1.已知高度:子盒子设置 display: inline-block; 父盒子设置 line-height 等于高度实现垂直居中;使用 text-align:center实现水平居中 2.父盒子 display:flex; align-items:center;justify-content:center; 3.定位&…...
混凝土搅拌站远程监控解决方案
一、项目背景 随着大规模的基础设施建设,对混凝土搅拌设备的需求量日益增加,对其技术指标的要求也日益提高,其技术性能将直接关系到工程的质量和使用寿命。而混凝土生产的质量是在生产过程中形成的,而非最终强度的检测。混凝土生…...
Spark SQL 学习总结
文章目录(一)Spark SQL(二)SParkSession(三)DataFrame常见算子操作(四)DataFrame的sql操作(五)RDD转换为DataFrame(1)反射方式&#x…...
深度学习 - 37.TF x Keras Deep Cross Network DCN 实现
目录 一.引言 二.模型简介 1.Embedding and stacking layer 2.Cross Network 2.1 模型架构分析 2.2 计算逻辑...
关于政府网站建设的文件/网络怎么推广自己的产品
2019独角兽企业重金招聘Python工程师标准>>> JSP/Servlet的多线程原理: 1.servelet就是一个CGI,但比传统的CGI要快得过 传统CGI是多进程的,servlet是多线程的 以多线程方式执行可大大降低对系统的资源需求,提高 系统的并发量及响应时间. JSP/Servlet容器默认是采用单…...
野花免费观看日本电影哔哩哔哩/长春百度推广排名优化
目录UART简介Keil操作使用keil观察管脚时序波形总结参考UART简介 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片&…...
网站开发工资咋样/营销渠道策划方案
文件及内容处理 - tar、unip 1.tar:打包压缩命令 tar命令的功能说明 tar 命令常用语用于备份文件,tar 是用来建立,还原备份文件的工具程序,它可以加入,解开备份文件内的文件 tar命令的语法格式 tar [OPTION...] [FILE]…...
帝国cms网站建设/百度推广运营这个工作好做吗
https://bugs.gentoo.org/show_bug.cgi?id208499转载于:https://blog.51cto.com/axlrose/1293238...
高端模板网站建设公司/seo引擎搜索网站
模块的引入方式: 1.import 模块名:导入模块中的所有内容(引入多个用逗号分隔) import random,time 2.from 模块名 import 函数名1,函数名2... 导入部分模块 (导入部分的话直接使用) 3.from 模块…...
温州建设网站制作/外链生成工具
从这篇开始,是文本内容操作,区别于文本操作。 shell,perl,python,一直都是文本操作的专家语言,而我们今后学习的的将是shell的噱头--文本操作。下面提到最常见的一个: grep 这算是文本内容的一个重量级选手…...