Dockerfile镜像优化方案指引

本文介绍了如何逐步优化Dockerfile镜像,包括选择精简基础镜像,减少层数,使用多阶段构建,以及利用distroless镜像达到极致优化。通过示例展示了从276M优化至23.2M的过程。
摘要由CSDN通过智能技术生成

前言

镜像的优化注意几条:

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

接下来我们以rhel7镜像构建容器,并在容器中安装nginx的源码包。以此容器构建新的镜像并做做优化

1.软件准备

[root@server1 docker]# pwd
/tmp/docker
[root@server1 docker]# ls
nginx-1.15.9.tar.gz  rhel7.tar

2.导入rhel7镜像

[root@server1 ~]# docker load -i rhel7.tar

3.编写Dockerfile

[root@server1 docker]# pwd
/tmp/docker
[root@server1 docker]# vim Dockerfile
FROM rhel7
COPY yum.repo /etc/yum.repos.d/yum.repo
RUN rpmdb --rebuilddb && yum install -y gcc pcre-devel zlib-devel make
ADD nginx-1.15.9.tar.gz /mnt   ##ADD比COPY更强大,如果文件是可识别的压缩文件,会帮忙解压
WORKDIR /mnt/nginx-1.15.9
RUN sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc     ##关闭debug日志
RUN ./configure --prefix=/usr/local/nginx
RUN make
RUN make install
EXPOSE 80
VOLUME ["/usr/local/nginx/html"]
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

在这里插入图片描述
4.构建镜像

[root@server1 docker]# docker build -t nginx:v1 .

在这里插入图片描述
在这里插入图片描述
5.创建容器,并测试是否能正常访问

[root@server1 docker]# docker run -d --name nginx nginx:v1 
096c2d2020638963e877e07a850589ff30e5f5af45278e33f8a859fed35dc81d
[root@server1 docker]# 
[root@server1 docker]# docker inspect nginx
"Source": "/var/lib/docker/volumes/7a9f496f3b9d16fa9725ca107c39fa8b9d782c18f0dd3f8d04ea17022b72905a/_data",
"IPAddress": "172.17.0.2",

[root@server1 docker]# cd /var/lib/docker/volumes/7a9f496f3b9d16fa9725ca107c39fa8b9d782c18f0dd3f8d04ea17022b72905a/_data
[root@server1 _data]# ls
50x.html  index.html
[root@server1 _data]# echo  "hello world" > index.html 
[root@server1 _data]# 
[root@server1 _data]# cat index.html 
hello world
[root@server1 _data]# 
[root@server1 _data]# curl 172.17.0.2
hello world

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值