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 计算逻辑...
计算机网络实验 做网站的/最近的国内新闻
目录 replace if..else.. ARouter跳转形式 null 判断 过滤 map loading提示 toast调用 打印日志 when 时间控件 Glide 图片加载 防止重点 Dagger 调用 launch Dialog提示 get() 埋点 repeat循环 ActivityManager 延迟加载 runCatch 登录拦截 水纹点击效果 replace tv_nam…...
汕头免费建设网站制作/百度网盘app怎么打开链接
👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇转自 | 募格学术参考资料 | 抖音陈见夏夏(求关注版、秒闻视频、募格学术读者投稿、留言、微博、知乎等。试问谁没有为导师的论文批注心跳加速过呢…...
深圳做网站推广的公司哪家好/徐州百度推广公司
在树的模块中,讲解树的结构化特性。会以MySQL语法树为例,看树是如何在 Amazon AWS 中以超大型数据库查询起到中流砥柱的作用的,后半部分则会拆解 LSM 树在 Apache 项目中的应用。 树和图最大的区别就是有没有环。树是没有环的图。因为没有遍历…...
网站关键字优化地点/百度广告推广电话
从选择Java GPL许可方式开源,到扩展X86产品线,到现在的股票代码由“SUNW”改变为“JAVA”,施瓦兹正在向我们展现一个全新的、灵活的而不是食古不化的Sun。IT 需要的是创新、创新、再创新,任何固执己见的家伙注定要被淘汰。在大家都…...
费县做网站/网站整站优化
之前也没写过什么博客,可能文章结构比较混乱,想到那写到哪。主要是把自己学习中的经验写下来。为什么选择laravel框架,是因为laravel框架目前是Php最流行的框架,深入研究后发现和asp.net mvc框架在功能上基本上是伯仲之间。只是各…...
找人做网站推广/海外seo
【SpringBoot高级篇】SpringBoot集成redis缓存1. Redis概述1.1 redis的应用场景2. Redis安装2.1 在线安装2.2 安装包安装2.2.1 在Ubuntu上安装GCC2.2.2 tar安装docker安装拉取镜像启动镜像3. 命令操作Redis key命名规范3.1 redis的数据结构:3.1.1 字符串类型 String…...