docker镜像优化:dockerfile构建nginx / 缓存构建 / 减少镜像层数 / 清理镜像构建的中间产物 / 多阶段构建/ 选择最精简的基础镜像

本文详细介绍了如何优化Docker镜像,包括选择精简基础镜像、减少镜像层数、利用缓存加速构建、清理中间产物和采用多阶段构建技术来减小镜像大小。通过实例展示了优化过程,如从Dockerfile到创建镜像、运行容器、对比镜像大小等步骤。
摘要由CSDN通过智能技术生成

######1.镜像优化的思路######

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

######2.构建nginx######

###1.删除多余镜像###

[root@server1 ~]# docker rmi busybox:v1 busybox:v2 busybox:v3 busybox:v4
    ##docker rmi 可以删除本地一个或多少镜像

###2.导入镜像###

###3.下载安装包###

(安装包必须和dockerfile文件在同一个目录下,才能检索到)

###4.编辑dockerfile文件,创建镜像###

[root@server1 docker]# vim Dockerfile
FROM rhel7
COPY dvd.repo /etc/yum.repos.d/dvd.repo
ADD nginx-1.15.8.tar.gz /mnt
EXPOSE 80   ##指定端口
WORKDIR /mnt/nginx-1.15.8
RUN rpmdb --rebuilddb && yum install -y gcc make zlib-devel pcre-devel
RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
RUN ./configure --prefix=/usr/local/nginx
RUN make
RUN make install
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

(我们自己构建的镜像比官方给出的镜像多了167MB,有减小优化的空间)

###5.运行容器###

(nginx服务的80端口开启)

###6.查看镜像详细信息###

[root@server1 docker]# docker inspect nginx:v1   ##获取容器/镜像的元数据
     ##-f :指定返回值的模板文件
     ##-s :显示总的文件大小
     ##--type :为指定类型返回JSON

 

######3.利用缓存构建#######

缓存并不能减小镜像大小,但可以加快构建速度

###1.编辑dockerfile文件,创建镜像###

[root@server1 docker]# vim Dockerfile
FROM rhel7
COPY dvd.repo /etc/yum.repos.d/dvd.repo
ADD nginx-1.15.8.tar.gz /mnt
EXPOSE 80
WORKDIR /mnt/nginx-1.15.8
RUN rpmdb --rebuilddb && yum install -y gcc make zlib-devel pcre-devel
RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc
RUN ./configure --prefix=/usr/local/nginx
RUN make
RUN make install
VOLUME ["/usr/local/nginx/html"]   ##指定数据卷
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

(前面的10条命令都是用缓存创建的,只添加了11行,但11行和12行都重新构建了)

###2.查看镜像详细信息###

[root@server1 docker]# docker inspect nginx:v2

(数据卷有了存放目录)

###3.对比镜像大小###

(v1和v2镜像大小一样)

###4.运行容器,查看容器的数据卷###

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值