linux怎么查看本机内存大小
255
2022-10-18
编写 Dockerfile 最佳实践
官方仓库虽然有数十万计的免费镜像,但大多数无法直接满足公司业务需求,这就需要我们自己去定制镜像了。
Docker通过Dockerfile自动构建镜像,Dockerfile是一个包含用于组建镜像的文本文件,由一条一条的指令组成。
这里,给你提供5点编写建议,可帮助你编写高效易用的Dockerfile。
1.减少镜像层
一次RUN指令形成新的一层,尽量Shell命令都写在一行,减少镜像层。 例如:
FROM centos:7MAINTAINER aliangedu.cnRUN yum install epel-release -yRUN yum install -y gcc gcc-c++ make -yRUN wget tar zxf php-5.6.36.tar.gzRUN cd php-5.6.36RUN ./configure --prefix=/usr/local/phpRUN make -j 4 RUN make installEXPOSE 9000CMD ["php-fpm"]
应该写成:
FROM centos:7MAINTAINER aliangedu.cnRUN yum install epel-release -y && \ yum install -y gcc gcc-c++ make RUN wget && \ tar zxf php-5.6.36.tar.gz && \ cd php-5.6.36 && \ ./configure --prefix=/usr/local/php && \ make -j 4 && make installEXPOSE 9000CMD ["php-fpm"]
结果:12层 -> 6层
2.优化镜像大小:清理无用数据
一次RUN形成新的一层,如果没有在同一层删除,无论文件是否最后删除,都会带到下一层,所以要在每一层清理对应的残留数据,减小镜像大小。
FROM centos:7MAINTAINER aliangedu.cnRUN yum install epel-release -y && \ yum install -y gcc gcc-c++ make gd-devel libxml2-devel \ libcurl-devel libjpeg-devel libpng-devel openssl-devel \ libmcrypt-devel libxslt-devel libtidy-devel autoconf \ iproute net-tools telnet wget curl && \ yum clean all && \ rm -rf /var/cache/yum/* RUN wget && \ tar zxf php-5.6.36.tar.gz && \ cd php-5.6.36 && \ ./configure --prefix=/usr/local/php \ make -j 4 && make install && \ cd / && rm -rf php*
至少能节省几十M,甚至几百M。
3.减少网络传输时间
最好在内部有一个存放软件包的地方,类似于上述的PHP官方下载地址:17.05开始支持多阶段构建(multi-stage builds),可以简化Dockerfile,减少镜像大小。
例如,构建JAVA项目镜像:
# git clone cd tomcat-java-demo# vi DockerfileFROM maven AS buildADD ./pom.xml pom.xmlADD ./src src/RUN mvn clean package FROM lizhenliang/tomcatRUN rm -rf /usr/local/tomcat/webapps/ROOTCOPY --from=build target/*.war /usr/local/tomcat/webapps/ROOT.war# docker build -t demo:v1 .# docker container run -d -v demo:v1
首先,第一个FROM 后边多了个 AS 关键字,可以给这个阶段起个名字。
然后,第二部分FROM用的我们上面构建的Tomcat镜像,COPY关键字增加了—from参数,用于拷贝某个阶段的文件到当前阶段。这样一个Dockerfile就都搞定了。
5.选择小的基础镜像
选择原则一:追求镜像小,可使用Alpine镜像,Alpine是一个轻量级的Linux发行版,镜像仅有5.6MB,构建出的镜像也很小,但其采用MuslLibc,相比Glibc兼容性市面主流技术较差,需进一步测试。选择原则二:追求稳定及使用习惯,使用CentOS镜像。选择原则三:追求稳定及软件包新版,使用Ubuntu/Debian镜像,软件包新版发布上线快。
小结:镜像小有很多好处,例如快速部署、快速回滚。减少服务中断时间,同时镜像仓库占用磁盘空间也少了。
作者:小家电维修
转世燕还故榻,为你衔来二月的花。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~