ad

《基于Kubernetes的容器云平台实战》_了解最新技术前沿_3.3.2 Dockerfile 优化实例

admin 138 2023-10-25

【摘要】 本书摘自《基于Kubernetes的容器云平台实战》一书中第3章,第3节,由陆平、左奇、付光和张晗等编著。

3.3.2 Dockerfile 优化实例

下面以 Dockerfile内容为基础,按照检查项进行逐步优化。该 Dockerfile的内容如下:

《基于Kubernetes的容器云平台实战》_了解最新技术前沿_3.3.2 Dockerfile 优化实例

FROM RHEL

ADD ·/mywebapp

RUN apt-get update

RUN apt-get upgrade -y

RUN apt-get install -y tomcat ssh MySQL

RUN cd /app && npm install

CMD MySQL & sshd & npm start

1 ) 编 写 .dockerignore文件。 .dockerignore的作用和语法类似于.gitignore, 用来忽略 一些不需要的文件,这样可以有效加快镜像构建时间,同时减少Docker 镜像的大小。示例 如下:

.git/

2)容器只运行单个应用。

FROM RHEL

ADD ·/mywebapp

RUN apt-get update

RUN apt-get upgrade -y

RUN apt-get install -y tomcat #ssh MySQL

RUN cd /app && npm install

CMD MySQL & sshd & npm start

3)run 指令合并。

FROM RHEL

ADD ·/mywebapp

RUN apt-get update \

&& apt-get upgrade -y \

&& apt-get install -y tomcat \ #ssh MySQL

& cd /app && npm install

4)基础镜像的标签不要用latest。

FROM RHEL:7.4

ADD ·/mywebapp

RUN apt-get update \

&& apt-get upgrade -y \

&& apt-get install -y tomcat \ #ssh MySQL

& cd /app && npm install

5)设置默认工作目录。

FROM RHEL:7.4

WORKDIR /mywebapp

ADD ./mywebapp

RUN apt-get update \

&& apt-get upgrade -y \

& apt-get install -y tomcat \ #ssh MySQL

& cd /app && npm install

6)设置环境变量。

FROM RHEL:7.4

WORKDIR /mywebapp

ADD ·/mywebapp

RUN apt-get update \

&& apt-get upgrade -y \

& apt-get install -y tomcat \ #ssh MySQL

ENV HOST=10.47.43.1 \

PORT=8080

3.3.3 检查及优化工具

Dockerfile 写好后可以通过 http://dockerfile-linter.com/进行语法检查,然后针对检查结 果进行优化。

3.4 操作系统基础镜像制作

目前,具有一定规模的企业都会自己制作操作系统镜像,而不是直接使用公有Hub 上 的镜像或者从镜像提供商的网站下载并直接使用,主要原因如下:

1)下载的容器镜像文件过大,浪费空间,执行效率低。

2)下载的容器镜像过小,不少驱动、工具或文件在容器镜像中并没有包括,不能满足 应用的要求。

3)镜像文件没有遵循企业的规范。

4)外部下载的容器镜像存在安全漏洞。

5)操作系统版本同企业用的主流版本不一致。

因此企业需要掌握操作系统基础镜像的制作技能并制定出相关的规范,以满足企业的 基本要求。操作系统基础镜像属于容器镜像的base image,其他镜像都是这个镜像的上层 镜像。

由于容器共享宿主机操作系统的内核, rootfs 使用宿主机,因此操作系统基础镜像中主 要包括rootfs、rpm 工具包及常用命令等。

3.4.1 操作系统版本选择

根据自身的特点及需要,各个企业确定需要制作基础镜像的操作系统版本号,本文主 要使用RHEL7.4(3.10.0-693.el7.86 64)版本Linux系统,为保证应用容器化改造后获得 最佳的兼容性,容器操作系统基础镜像也同样选型为RHEL7.4 操作系统(文件系统版本号: basesystem- 10.0-7.el7.noarch)。

3.4.2 操作系统参数调整

根据企业宿主机操作系统安装配置的要求,修改操作系统的参数配置,如文件句柄数、 缓存大小、防火墙开关、交换分区等。

3.4.3 确定基础 rpm 包范围

基于Red Hat官网提供的RHEL7.4 容器基础镜像,为了进一步精简镜像体积,根据实 际情况删除不常用rpm 包,主要删除规则如下:

1)不需使用的工具类的 rpm 包可删除。

2)不影响系统安全且不需要的系统类的rpm 包可删除。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《Java语言程序设计与应用》_从基础向熟练进发_2.2.1 字符串的基本数据类型特性
下一篇:学会《大数据可视化技术》_轻松读懂你的数据_2.3 数据可视化的基本框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×