容器化背景
现今越来越多的企业将运用到自动化运维中,不管是为了保证开发、测试、生产环境的环境一致性,还是和CI/CD工具的集成度,例如对或k8s的自动构建部署。
因为容器具备如下优点:
镜像源概述
1. 公共镜像
1.1 公共镜像的优点
联网直接pull并使用,简便。
1.2 公共镜像的缺点
1)或国内镜像网站pull第三方镜像,但由于审核并非严格,所以存在一些安全漏洞;
2)增加了不必要的程序,冗余度差。
示例:优化镜像后的大小为原先未优化的大小的5倍,大大节省空间。
--上的最热门的镜像:
--没有进行优化的镜像,大小为629M:
--优化后的镜像,大小为126M:
2. 私有镜像
2.1 私有镜像的优点
每个企业或个人使用容器,都是应对不同的业务场景,没有完全一致的业务场景,自己制作的镜像最能满足自己的要求,节省资源成本,安全性高。
2.2 私有镜像的缺点
制作流程复杂,可重用性低,按需定制。
合格镜像的特点
1. 选择合适的基础镜像
选择镜像代替、、等镜像从图中对比可看出的大小远大于,那么我们在选择基础镜像时选用时就会减少相应的体积。
2. 镜像文件层级尽量少
每执行一条中的指令,就会提交一次修改,这次修改会保存成一个只读层挂载到联合文件系统所以在编写时,我们可以根据实际情况去合并一些指令docker国内镜像源,比如我们在安装jdk,时,解压、编译、安装以及删除源文件的指令可以放在一起,以减少最终的镜像层docker国内镜像源,也可以通过压缩来减少层级但不一定好用。
3. 去除不必要的输出
在构造镜像的时候总会有一些日志文件或者缓存的输出(的挂载到主机不占用镜像的容量),将这些文件挂载或者直接删除。
4. 复用镜像层
在镜像的构建过程中,根据指定的顺序执行每个指令。在执行每条指令之前,都会在缓存中查找是否已经存在可重用的镜像,如果有就使用现存的镜像,不再重复创建,而镜像层多可重用的机会就越多,整体镜像部署时也不用上传全部镜像。
优化镜像的示例
1. 选取作为操作系统基础镜像
2. 制作jre8环境镜像
--创建容器查看是否成功运行。
3. 直接应用jre8私有镜像并构建镜像
--调用jre8的镜像作为基础镜像拷贝源码包并编写环境变量。
--构建成功。
4. 启动镜像并验证
--运行 映射端口为8999:
--登录查看到网页,成功制作镜像并运行: