docker镜像的优化

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

实验:docker安装nginx
FROM rhel7
EXPOSE 80
MAINTAINER [email protected]
COPY westos.repo /etc/yum.repos.d/
RUN rpmdb --rebuilddb
RUN yum install -y gcc make pcre-devel zlib-devel
ADD nginx-1.18.0.tar.gz /mnt
WORKDIR /mnt/nginx-1.18.0
RUN ./configure --prefix=/usr/local/nginx
RUN make
RUN make install
ENTRYPOINT ["/usr/local/nginx/sbin/nginx", “-g”, “daemon off;”]

docker镜像的优化
docker镜像的优化
docker镜像的优化
安装ok;
docker镜像的优化
优化
1.删除中间产物
docker镜像的优化
容量减小
docker镜像的优化
2.减少层级数
docker镜像的优化
3:多阶段构建镜像(可以最大化缩减镜像大小)
#在构建 nginx 镜像时,最终只需要的是/usr/local/nginx 的二进制程序,其他过程都可以不要
#那么我们可以把构建过程在一个镜像中完成,二进制程序放在一个新的镜像中,这样新的
镜像就很小了

FROM rhel7 as build ##作为构建过程的镜像
EXPOSE 80
COPY dvd.repo /etc/yum.repos.d/
ADD nginx-1.16.0.tar.gz /mnt
WORKDIR /mnt/nginx-1.16.0
RUN rpmdb --rebuilddb && yum install -y gcc make pcre-devel zlib-devel && yum clean all
&& ./configure --prefix=/usr/local/nginx && make && make install && rm -fr /mnt/nginx-1.16.0
FROM rhel7
EXPOSE 80
MAINTAINER [email protected]
VOLUME ["/usr/local/nginx/html"]##使用容器时可以在宿主机对容器内容进行发布
COPY --from=build /usr/local/nginx /usr/local/nginx ##拷贝 nginx 程序目录
ENTRYPOINT ["/usr/local/nginx/sbin/nginx", “-g”, “daemon off;”]
docker镜像的优化
docker镜像的优化

4.也可以使用基础镜像小的安装包
docker镜像的优化
docker镜像的优化
docker镜像的优化