Docker学习:容器的优化 | Dockerfile优化 | 如何修改时区
2022/1/8 23:33:24
本文主要是介绍Docker学习:容器的优化 | Dockerfile优化 | 如何修改时区,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
本讲是从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构建自己的镜像
这篇关于Docker学习:容器的优化 | Dockerfile优化 | 如何修改时区的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-26alpine构建的镜像无法使用docker exec -it 进入内部怎么办?-icode9专业技术文章分享
- 2024-12-24Docker环境部署资料详解
- 2024-12-24Docker环境部署教程:新手入门详解
- 2024-12-24Docker环境部署项目实战教程
- 2024-12-24Docker环境部署学习:初学者指南
- 2024-12-24Docker环境部署入门:新手必读指南
- 2024-12-20Docker部署资料:新手入门教程
- 2024-12-19Docker部署实战:新手入门教程
- 2024-12-19Docker部署教程:新手入门详解
- 2024-12-09云原生周刊:在Docker上部署大语言模型