Docker 2 (镜像封装、优化)

一、镜像构建

部署有nginx的rhel7系统的镜像
删掉之前实验留下的镜像
请添加图片描述将rhel7.tar传给server1
请添加图片描述导入rhel7镜像,相当于使用rhel7的内核
请添加图片描述将server1的仓库配置文件复制到docker目录下
请添加图片描述编写dockerfile创建镜像
请添加图片描述通过Dockerfile建立镜像rhel7:gv1,执行命令创建镜像rhel7:v1
请添加图片描述成功创建
请添加图片描述
拉起容器demo;
docker inspect demo查看容器信息
请添加图片描述分配的 ip 为 172.17.0.2
请添加图片描述在宿主机上挂载的路径
请添加图片描述但访问时报错403 (403错误是网站访问过程中,常见的错误提示,意思为资源不可用,服务器理解客户的请求,但拒绝处理它),因为数据挂载在真实主机路径上,真实路径上没有数据,无法访问到内容
请添加图片描述
在宿主机挂载路径上创建默认发布文件index.html,进行访问;
此时成功获取到发布内容
请添加图片描述查看到镜像rhel7:v1的大小303MB,需要进行优化
请添加图片描述

二、镜像优化

选择最精简的基础镜像
减少镜像的层数
清理镜像构建的中间产物
注意优化网络请求
尽量去用构建缓存
使用多阶段构建镜像

优化思路:减少镜像层数,合并所有RUN指令,清理镜像构建的中间产物包括编译好的安装包和缓存/mnt/nginx-1.20.1 /var/cache/*,继续编辑文件Dockerfile,创建镜像v2
请添加图片描述查看镜像大小,v2大小为255MB,还需要优化
请添加图片描述用构建缓存,使用多阶段构建镜像;
刚刚的构建过程产生了我们想要的ngnix还生成了相对应的编译环境,然而我们并不需要这个环境,还占用内存,所以使用多阶段构建镜像;
先用基础模块产生ngnix等一系列产物,然后只把这个基础模块中的 /usr/local/nginx目录复制给第二个模块,我们只需要拿第二个模块的东西,这样可以大大缩小内存
请添加图片描述新的镜像rhel7:v3大小为141M,又有一定的优化
请添加图片描述运行v3镜像创建一个容器,ldd( 列出动态库依赖关系)查看结构;
由于rhel7中组件过多,很多东西用不上,还占空间,若是还想优化镜像的话,可以选择最精简的基础镜像替换原有的rhel7,但需要安装nignx所需要的函数库,如下
请添加图片描述将真机的base-debian10.tar传给server1
请添加图片描述导入base镜像;
docker images查看大小,仅仅19.2MB
请添加图片描述编写文件Dockerfile,给ngnix最基本的函数库,使用最基本的镜像base-debian10;
由于此时需要nginx镜像
请添加图片描述真机scp给server1
请添加图片描述导入nginx镜像
请添加图片描述build生成新的镜像rhel7:v4请添加图片描述此时再次查看大小为31M
请添加图片描述创建一个由rhel7:v4这个镜像产生的容器demo
请添加图片描述curl 172.17.0.2,成功访问到nginx默认发布页面
请添加图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值