ad

《基于Kubernetes的容器云平台实战》_了解最新技术前沿_3.2.5 构建镜像

admin 267 2023-10-25

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

3.2.5 构建镜像

docker image build根据 Dockerfile构建镜像。它通过Docker 引擎动态生成容器执行 Dockerfile中指令,逐次将执行结果提交为中间镜像和指定标识镜像。基本命令语法为:

docker image build [OPTIONS] PATH I URLI-

《基于Kubernetes的容器云平台实战》_了解最新技术前沿_3.2.5 构建镜像

PATH、URL 确定构建上下文。如指定PATH, 将路径下(也包括当前路径)文件和目 录打包(.dockerignore含不想上传内容)上传到 Docker引擎;如指定 git URL,则引擎克隆 该项目指定分支,作为上下文使用;还可使用远端 tar文件以及‘- ’表示的标准输入作为 上下文。

-f/--file 指定Dockerfile的路径,默认为当前路径下 Dockerfile文件。

-t/--tag 指定构建成功后镜像标识,使用多个该选项来指定多个镜像标识。

Dockerfile中可以定义ARG 参数,这些参数用--build-arg 选项在构建时动态指 定,预定义参数也是如此: --build-arg=http proxy=“http://one.proxy”。

使用--iidfile 将镜像ID 写入指定文件。 Dockerfile中有多段时, --target 指定 从哪段开始构建。 --label 指定生成镜像的标签。 --pull 会拉取基础镜像新版本,不 使用本地的。 -q/--quiet 控制输出信息。 --add-host 可定义主机名到IP 映射。 -- network=bridge I host I none I container:指定运行run命令 的网络模式。 --security-opt=[] 可参见前面 docker container run选项的说明,值为 key=value形式。

--rm 要求成功后删除中间层, --force-rm 则总是删除。 --no-cache 说明构建时 不使用缓存;而--cache-from=[] 中包含的镜像用于搜索缓存镜像层。 --squash 是实 验性功能,将当前 build过程只作为一层添加到父镜像上。

还有一些选项用于限制构建容器的资源占用,比如: --cgroup-parent;-m/--

memory;--memory-swap;--shm-size;--cpu-shares;--cpu-period,--cpu-quota,-

-cpuset-cpus,--cpuset-mems;--ulimit=[]等。

另外, --isolation 选项指定使用的容器隔离技术,只在Windows 下有意义。

3.2.6 修改本地镜像标识

docker image tag SOURCE IMAGE[:TAG] TARGET IMAGE[:TAG]

原镜像标识并不删除,相当于为原镜像标识生成了别名。

3.2.7 删除本地镜像

■ 删除本地镜像

docker image rm [OPTIONS]IMAGE [IMAGE...]

-f/--force, 强删被引用镜像,但不删运行容器引用的。 --no-prune 删除“虚悬” 镜像。引用一个镜像层的最后镜像被删除后,才会实际删除该镜像层。

■ 删除虚悬镜像

docker image prune [OPTIONS]

-f 选项无确认信息。 -a/--al1 删除所有未使用镜像。 --filter 选择被删除集合。

3.3 Dockerfile 优化

虽然Dockerfile 文件的编写语法比较简单,但是如何写出一个高质量的Dockerfile 也不 是一件容易的事情,本节主要介绍编写一个好的Dockerfile要遵循的规范、检查项目、实 例及优化工具。

3.3.1 Dockerfile 检查项

如何判断一个 Dockerfile是最优的, 一般要考虑如下因素:

■ Dockerfile 文件通俗易懂,可读性好。 Dockerfile 文件不宜过长,如果过长需要考虑 分成多个 Dockerfile。

■ 构建过程执行速度快,对执行环境要求低。

■ 构建出的镜像文件小,不含冗余的内容。

■ 构建出的Docker 镜像包含的分层尽可能少。

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

上一篇:从《Python数据分析案例教程》中_领悟数据和Python的魅力_3.1 认识 NumPy
下一篇:学会《大数据可视化技术》_轻松读懂你的数据_2.2.4 数据分析与数据挖掘
相关文章

 发表评论

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

×