######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镜像大小一样)