本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍:容器的优化( Dockerfile优化),提升自己的同时,希望对你也有所帮助。
容器内最好只有一个服务,要么只要Tomcat、要么只有nginx
RUN rm -fr /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && yum install -y nginx && yum clean all
RUN 命令的结尾,记得添加yum clean all ,缩减资源占用
FROM centos:7.6.1810
不要省略或者使用Latest版本的镜像,因为它是个变量,隔不久它就有可能会指向另一个新版本,这样镜像就需要重新拉取。
除非需要解压,才使用ADD,否则优先使用COPY
可以生成缓存,减少资源的使用
CMD nginx #启动nginx
替换为
COPY entrypoint.sh /entrypoint.sh #注意该行代码建议放在RUN命令的后面(这个文件有可能常被修改,放后面) ENTRYPOINT entrypoint.sh #启动容器命令
#vim entrypoint.sh
#chmod +x entrypoint.sh 给脚本添加执行权限
#/bin/bash set -e #如果出现异常,则立刻退出,而不是一直占用资源 nginx -c /etc/nginx/nginx.conf # 指定配置文件启动nginx exec "$@" #如果命令被阻断,则不运上一行nginx启动命令,重要的是exec,不是后面的$@或者$*
注:exec执行时会以新的进程替换原来的进程,但是进程的PID保持不变,仅仅是替换了原进程中的上下文内容。
精简版的体积一般都非常小,如果你了解怎么查找,参考:Tomcat精简版(第三小节) 为例
镜像的默认时区,与中国的北京时区,相差8个小时。修改时区后,可以避免一些因为时间问题引发的一些不必要的问题。
方法一:进入容器内部(docker exec -it ),用timedatectl命令修改
timedatectl set-timezone Asia/Shanghai
方法二:在Dockerfile中的写法
#移除容器中的localtime,从系统时区中取出上海时区,通过ln-s创建软链接方式给容器中的localtime RUN rm -rf /etc/localtime && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && yum clean all
通过这些优化,可以大大缩减镜像的体积,当然Dockerfile的优化,应该还有其他一些好的方法,等待我们共同去发掘,后期也会同步更新,期待一下吧~~,啦啦啦,啦啦啦~~
本讲内容是从 Docker入门到进阶里面抽离出来的内容,从而使原文更加有序、重点突出。希望对大家有所帮助。
1、如何获取Docker的最新版本 | 如何获取Tomcat/JDK/Nginx指定版本镜像
2、Docker学习必会的核心命令(pull、run、ps、images、build、exec)
3、配置阿里云镜像加速器,提高镜像下载速度
4、Dockerfile八大核心命令 | Dockerfile构建自己的镜像