2024年最全制作Docker镜像,用来下载OpenJDK11源码(2),java面试金融项目技术

分享

首先分享一份学习大纲,内容较多,涵盖了互联网行业所有的流行以及核心技术,以截图形式分享:

(亿级流量性能调优实战+一线大厂分布式实战+架构师筑基必备技能+设计思想开源框架解读+性能直线提升架构技术+高效存储让项目性能起飞+分布式扩展到微服务架构…实在是太多了)

其次分享一些技术知识,以截图形式分享一部分:

Tomcat架构解析:

算法训练+高分宝典:

Spring Cloud+Docker微服务实战:

最后分享一波面试资料:

切莫死记硬背,小心面试官直接让你出门右拐

1000道互联网Java面试题:

Java高级架构面试知识整理:

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

今天我们就来看下Docker镜像bolingcavalry/openjdksrc11:0.0.2的制作过程,看看它做了哪些事情来简化下载过程;

环境信息

  1. 操作系统:Ubuntu 16.04.5 LTS;

  2. Docker:18.06.1-ce;

准备材料

本次镜像用到了以下材料:

  1. Dockerfile:制作Docker镜像的脚本文件;

  2. cmd.sh:容器启动后执行的命令脚本;

  3. OpenJDK11源码压缩包(参考《Ubuntu环境下载OpenJDK11源码》);

您可以选择直接从GitHub下载上述所有内容,地址和链接信息如下表所示:

| 名称 | 链接 | 备注 |

| :-- | :-- | :-- |

| 项目主页 | https://github.com/zq2599/openjdksrc11 | 该项目在GitHub上的主页 |

| git仓库地址(https) | https://github.com/zq2599/openjdksrc11.git | 该项目源码的仓库地址,https协议 |

| git仓库地址(ssh) | git@github.com:zq2599/openjdksrc11.git | 该项目源码的仓库地址,ssh协议 |

要注意的问题

制作镜像前有两个问题先考虑好:

  1. 基础镜像尽量小,由于容器启动后要执行一些shell命令,所以选用仅含bash工具的bash:5.0-rc;

  2. OpenJDK11源码包不小(超过1G),因此做成的镜像也很大,用户下载镜像时,一旦网络问题下载失败,docker会自动重试,此时是重新下载,这意味着之前的下载都白做了,为了缓解这个问题,可以把整个源码压缩包分割成多个小文件,这样虽然整体大小不变,但是失败时重新下载的文件是很小的,在linux环境执行以下命令,将整个OpenJDK11源码压缩包分割成多个最大10兆的文件:

split -b 10m jdk11.tar.gz jdk11-

编写Dockerfile

Dockerfile内容如下,可见大部分内容是复制文件的操作,其余部分已有详细的注释,就不多说了:

Docker image of source for OpenJDK

VERSION 0.0.2

Author: bolingcavalry

#基础镜像使用bash:5.0-rc,特点是体积小

FROM bash:5.0-rc

#作者

MAINTAINER BolingCavalry zq2599@gmail.com

#定义源码存放目录

ENV SRC_PATH /src

#定义OpenJDK源码文件夹名称

ENV OPENJDK_SRC_PACKAGE_NAME jdk11

#创建目录

RUN mkdir $SRC_PATH

#把分割过的源码复制到工作目录,这么写可以保证每个文件layer都不大,这样下载镜像时如果中途失败,就不用重新下载一个巨大的layer

COPY ./$OPENJDK_SRC_PACKAGE_NAME-af $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-an $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-av $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bd $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bl $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bt $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cb $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cj $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cr $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cz $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dh $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dp $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dx $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ef $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ag $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ao $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-aw $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-be $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bm $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bu $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cc $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ck $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cs $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-da $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-di $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dq $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dy $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-eg $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ah $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ap $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ax $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bf $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bn $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bv $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cd $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cl $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ct $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-db $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dj $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dr $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dz $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-eh $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-aa $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ai $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-aq $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ay $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bg $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bo $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bw $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ce $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cm $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cu $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dc $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dk $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ds $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ea $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ei $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ab $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-aj $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ar $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-az $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bh $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bp $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-bx $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cf $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cn $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-cv $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dd $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dl $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-dt $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-eb $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ej $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ac $SRC_PATH/

COPY ./$OPENJDK_SRC_PACKAGE_NAME-ak $SRC_PATH/

最后

做任何事情都要用心,要非常关注细节。看起来不起眼的、繁琐的工作做透了会有意想不到的价值。
当然要想成为一个技术大牛也需要一定的思想格局,思想决定未来你要往哪个方向去走, 建议多看一些人生规划方面的书籍,多学习名人的思想格局,未来你的路会走的更远。

更多的技术点思维导图我已经做了一个整理,涵盖了当下互联网最流行99%的技术点,在这里我将这份导图分享出来,以及为金九银十准备的一整套面试体系,上到集合,下到分布式微服务

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

T20E-1715104655141)]

[外链图片转存中…(img-UJev85ne-1715104655141)]

[外链图片转存中…(img-RFrMlMOq-1715104655141)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

需要这份系统化的资料的朋友,可以点击这里获取

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值