本文由个人总结,如需转载使用请标明原著及原文地址

这里是基于我前一篇搭的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文件相关推荐

  1. 使用Docker运行java项目需要注意的glibc依赖库问题

    使用Docker运行java项目需要注意的glibc依赖库问题 转载自:https://blog.51cto.com/u_15329153/3758717 docker官方推荐java是基于glibc ...

  2. Centos8安装Docker,使用Docker安装MySQL、Oracle并修改实例名

    centos8安装Docker 1.安装依赖 # 首先我们设置 Docker 仓库 yum install -y yum-utils device-mapper-persistent-data lvm ...

  3. 在Linux上编写并运行Java文件

    一.编写.java文件 1.首先检查Linux中是否含有Java的编译环境 java -version 显示当前系统中包含java环境 2.建立Java文件 vim test.java 3.输入代码 ...

  4. Linux环境下创建运行.java文件

    1.下载安装jdk. 一条yum指令就可以搞定了,也可以自己从windows上共享文件进行操作,有些复杂,这里不做详细描述. 以后熟练了,可能进行二更. yum install java-1.8.0- ...

  5. 运行java黑窗口是什么意思_黑窗口运行java文件步骤

    误区纠正:运行java文件可以不用配置jdk环境变量,配置jdk只是为了方便运行时找到它 未配置环境变量运行java程序步骤: 1.安装jdk,在G盘下建一个java文件测试类 2.win+r 快捷键 ...

  6. cmd运行java语名_怎么用cmd运行java文件

    [怎么用cmd运行java文件]怎么在cmd里面执行java文件 找到存放要执行的JAVA的文件目录,然后在目录中运行CMD,运行JAVA程序之前要先编译,1.javac 文件名.java回车2.ja ...

  7. 基于 RHEL 7.6 安装 Docker 运行环境

    文章目录 1. 写在前面 2. 安装过程 3. 参考链接 1. 写在前面 尽管当前容器和容器编排等技术是非常热门的话题,但我之前的工作却很少有机会接触到这一类的技术栈,想起来不免觉得有些落伍了.不过好 ...

  8. 一键安装,双击运行——Java安装程序制作

    如果您喜欢这些文章,欢迎点击此处订阅本Blog <script type="text/javascript"></script> <script sr ...

  9. VS Code运行Java文件

    VS Code运行Java文件 本文介绍使用VS Code运行.调试Java文件的最简步骤,不涉及项目的构建. 下载并安装VS Code,官网地址:https://code.visualstudio. ...

最新文章

  1. 【深度学习】基于Torch的Python开源机器学习库PyTorch概述
  2. C语言之字符串处理函数
  3. https://www.unimelb.edu.au/
  4. Sql添加Oracle数据库的表空间和用户
  5. Mycat - 数据库分库分表中间件,国内最活跃的、性能最好的开源数据库中间件
  6. 年底了,总结一下大型网站的入侵经验[t00ls转载]
  7. Java NIO---1
  8. Python中默认参数self的理解
  9. 2017杭州云栖大会FAQ(持续更新中)
  10. vue学习-声明周期和实例
  11. go语言字符串换行_Go语言字符串
  12. idea更换源_IDEA修改Maven替换阿里源
  13. Linux下安装配置使用python虚拟环境
  14. dad my_My dad英语绘本.ppt
  15. 用微信远程控制电脑?这个新玩法一定爽到你
  16. ue4导入倾斜摄影_倾斜摄影如何和bim结合?倾斜摄影数据怎么导?我来告诉你!...
  17. SAP HR/HCM 定界的个人理解
  18. 输入学生的学号及语文、数学、英语成绩, 输出学生各科成绩及率均成绩信息
  19. python语音唤醒功能_百度语音识别 语音唤醒失败
  20. 牛客网刷题记录 || 结构体和类

热门文章

  1. html小总结:表格立体效果的实现.
  2. 从ChatGPT到ChatCAD:基于大型语言模型的医学图像交互式计算机辅助诊断
  3. Unity批量刷草工具及优化
  4. 放款2500亿仅占1%,度小满要做消费金融拉动内需的新动力?
  5. web安全基础之HTTP
  6. 旧机还在换盆?! Linux deploy让她再发光!
  7. 小程序label添加下划线
  8. html/css移动界面侧滑效果
  9. Ubuntu 20.04 安装 ros 遇到的问题: The following packages have unmet dependencies
  10. 广东工业大学计算机专业课程,广东工业大学在职研究生计算机专业课程安排