12、Dockerfile的优化

版权声明:原创作品,谢绝转载!否则将追究法律责任。 ————— 作者:kirin

1.优化原则:构建的镜像尽可能小,构建速度尽可能快

a: 使用体积小的linux镜像alpine作为基础镜像
alpine+nginx=20M     (使用alpine系统,什么软件都会小,缺点是兼容性差)
ubuntu+nginx=70M
centos+nginx=400M  

使用alpine系统,需要配置yum源,使用的是apk命令
##首先替换为清华源
/ # sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
##更新软件仓库
/ # apk update
##安装nginx
/ # apk add nginx
##查看nginx版本
/ # nginx -v
##创建nginx父及目录,不然nginx启动不了。(小系统的bug……)
/ # mkdir /run/nginx
##启动nginx服务
nginx
##接下来退出容器,将它提交未镜像
[root@docker01 ~]#  docker commit magical_greider alpine_nginx:v1
[root@docker01 ~]#  docker images alpine_nginx:v1 

b:尽可能的清理无用的缓存文件,(尽可能把多个RUN合并)以centos为例
##进入目录
[root@docker01 ~]#  cd /opt/dockerfile/cenos7_nginx
##编辑dockerfile
[root@docker01 /opt/dockerfile/cenos7_nginx]#  vim dockerfile 
[root@docker01 /opt/dockerfile/cenos7_nginx]#  cat dockerfile 
FROM centos:7
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo && \
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo && \
yum install nginx  -y && \
rm -rf /var/cache/yum/* &&\
rm -rf /usr/share/nginx/html/index.html && \
echo 'oldzhang' >/usr/share/nginx/html/index.html

#CMD nginx -g 'daemon off;'
CMD ["nginx ","-g","daemon off;"]

##制作镜像
[root@docker01 /opt/dockerfile/cenos7_nginx]# docker build --network=host -t centos7_nginx:v1 .

这就是清理缓存的作用

c:修改dockerfile的时候,尽可能把修改的内容放在最后
如果在前几行加了内容,在docker build的时候就不会走缓存了,又会重新下载。 
-------------------------------------------------------------------------------

d:使用.dockerignore忽略构建docker镜像时,不需要的文件
[root@docker01 /opt/dockerfile/cenos7_nginx]#  vim .dockerignore 
[root@docker01 /opt/dockerfile/cenos7_nginx]#  cat .dockerignore 
docker_centos7.tar.gz

posted @ 2022-06-03 10:51  kirin(麒麟)  阅读(190)  评论(0编辑  收藏  举报
Δ