docker构建体积较小的jdk镜像 原创 2021-03-01 14:28:05.0 阅读(1871)次 #### 前言 我们一般在docker中运行java项目都会选择体积较小的jdk镜像,比如alpine-java构建的jdk镜像,但alpine安装软件并不方便,并且有些软件在alpine中并不好装。 例如我们java项目中使用tesseract来做图片文字识别,它在centos中很容易安装,在alpine环境中,怎么都没法安装成功,于是我们就需要构建一个有centos环境的jdk镜像 #### 构建有centos环境的jdk镜像 1.下载jre 下载地址: https://www.java.com/en/download/manual.jsp 下载jre8.tar.gz,并不是下载jdk,这样打出的镜像文件就会相对小一点。 2.上传jre到有docker环境的机器上,解压: tar -zxvf re8.tar.gz 删除jre8.tar.gz,否则这个文件也会打进去, 创建Dockerfile,最后文件如下: ``` drwxrwsrwx 2 root root 208 Feb 22 08:48 bin -rwxrwxrwx 1 root root 358 Feb 22 11:12 Dockerfile drwxrwsrwx 4 root root 31 Feb 22 08:46 legal drwxrwsrwx 13 root root 4096 Feb 22 08:48 lib drwxrwsrwx 4 root root 47 Feb 22 08:46 man -rwxrwxrwx 1 root root 190 Dec 9 18:15 THIRDPARTYLICENSEREADME-JAVAFX.txt -rwxrwxrwx 1 root root 190 Dec 9 20:47 THIRDPARTYLICENSEREADME.txt ``` 然后设置权限 chmod 777 * -R 3.Dockerfile文件写入如下内容: ``` FROM centos:centos8 MAINTAINER user "user@qq.com" ADD . /usr/java/jdk/ ENV JAVA_HOME /usr/java/jdk ENV PATH ${PATH}:${JAVA_HOME}/bin WORKDIR /opt ENTRYPOINT java -version ``` 网上也有人使用ADD jre8.tar.gz /usr/java/jdk/这样让docker自己解压的方式构建镜像,但是这样需要运行权限命令: RUN /bin/sh -c 'chmod 777 /usr/java/jdk -R' 否则会报权限不足的问题。 但这样打出来的包会更大一点,有400多MB。因为多构建了一层。 4.执行build docker build -t jdk-centos:1.8.281 . 查看镜像 ```shell [root@localhost df-jdk]# docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE jdk-centos 1.8.281 878bcb563f8c 6 minutes ago 329MB ``` 镜像大小只有329MB 运行容器成功: ```shell [root@localhost df-jdk]# docker run --name myjava jdk-centos:1.8.281 java version "1.8.0_281" Java(TM) SE Runtime Environment (build 1.8.0_281-b09) Java HotSpot(TM) 64-Bit Server VM (build 25.281-b09, mixed mode) ``` java docker 上一篇:clickhouse如何删除数据库和创建数据库以及分布式DDL创建数据库 下一篇:Es创建索引mapping时报错:Root mapping definition has unsupported parameters: [doc
相关文章 docker中安装redis(1918) docker中启动elasticsearch报错:Error opening log file 'logs/gc.log': Permission denied(8171) centos7使用docker安装gitlab(1658) linux下docker安装postgreSql数据库,附带启动脚本(1943) Jep实现Java表达式计算(2057) 阿里巴巴p3c代码规范eclipse插件(1554) java使用snakeyaml库读取和操作yml文件(2496) java通过域名获取域名的IP地址(1520) jmeter随机日期参数(1128) 线程安全测试 ArrayList Collections.synchronizedList CopyOnWriteArrayList(1514) 推荐文章 linux使用epel源yum安装iftop、nload、nginx等(2) spring cloud+feign+mybatis中使用seata0.9实现分布式事务(7) spring cloud gateway报错Only one connection receive subscriber allowed(82) spring cloud中Feign调用诡异报错MethodNotAllowed: status 405 reading(116) elasticsearch7.1保存时报错: Validation Failed: 1: type is missing;(7) 聊聊数据保存到MySQL后数据乱码的问题(1) 使用spring4实现websocket连接(1) jquery对象与dom对象互转(1) linux下nginx安装其他模块(1) solr时区设置解决时间多8小时问题(1) 热门文章 ubuntu安装内网带宽测试工具iperf3(4565) linux使用epel源yum安装iftop、nload、nginx等(3909) jenkins构建与自动部署maven项目(3195) docker构建体积较小的jdk镜像(1753) centos7使用docker安装gitlab(1541) linux下jenkins的安装(1293) java stream去重的几种方式(40819) clickhouse如何删除数据(40016) clickhouse清空删除表数据(18228) the dependencies of some of the beans in the application context form a cycle(16324) 标签列表 java java java java java java java基础 微服务 异常处理 mysql clickhouse clickhouse clickhouse clickhouse clickhouse spring cloud spring boot linux elasticsearch feign jdbc spring js docker postgresql solr seata nginx maven gateway hsqldb 数据库 架构 大数据分析 分布式事务 redis canal dubbo hadoop 消息队列 win10 websocket springmvc git html select2 mybatis jenkins rocketmq quartz activemq 数据库集群 ajax bat 电脑 笔记 eclipse 设计模式 阿里云 github freemarker jvm jquery javamail redission redission对象 hystrix http hibernate springmail svn ubuntu ueditor xheditor zookeeper 分布式 小程序 开发工具 gitlab