ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Docker学习:容器的优化 | Dockerfile优化 | 如何修改时区

2022-01-08 23:32:14  阅读:249  来源: 互联网

标签:优化 nginx entrypoint && 镜像 Docker Dockerfile localtime


前言

本讲是从Docker系列讲解课程,单独抽离出来的一个小节,重点介绍:容器的优化( Dockerfile优化),提升自己的同时,希望对你也有所帮助。

一、普通优化

1.保持容器的纯粹性

容器内最好只有一个服务,要么只要Tomcat、要么只有nginx

2.合并RUN,彼此之间用&&拼接

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 ,缩减资源占用 

3.指定基准镜像的具体版本

FROM centos:7.6.1810

不要省略或者使用Latest版本的镜像,因为它是个变量,隔不久它就有可能会指向另一个新版本,这样镜像就需要重新拉取。

4.能使用COPY就不用ADD

除非需要解压,才使用ADD,否则优先使用COPY

5.COPY文件时,不常变动的放上面,常变动的放下面

可以生成缓存,减少资源的使用

6.entrypoint命令抽离为entrypoint.sh,脚本末尾使用exec 

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保持不变,仅仅是替换了原进程中的上下文内容。 

7.选择基准镜像时,在官网选择alpine版本或者simp版本

精简版的体积一般都非常小,如果你了解怎么查找,参考:Tomcat精简版(第三小节) 为例

8.从GitHub上拉取镜像后,第一件事儿,修改时区

镜像的默认时区,与中国的北京时区,相差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构建自己的镜像

标签:优化,nginx,entrypoint,&&,镜像,Docker,Dockerfile,localtime
来源: https://blog.csdn.net/xp871038951/article/details/122378537

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有