使用Dockerfile build镜像

发布时间:2026/10/31 23:11:58

使用Dockerfile build镜像 映像是能够认作作为容器的压缩包, 它涵盖拥有应用程序以及运行该应用程序所必要的依赖, 而容器是映象的运行时候的实例。一般而言, 构建镜像时通常采用的是进行构建的方式, 而非其他方式 , 虽说在构建过程中也会创建出新层 , 然而这实际上是一种通过手工来创建镜像的途径 , 这种方式极易出现错误 , 而且效率较为低下 , 使用者对于镜像是怎样被创建出来的并不知晓 , 进而无法针对镜像开展审计工作 , 如此便存在着安全方面的隐患。我们将解释什么是如何创建以及如何使用构建映像。What is它乃是一个专门用于构建镜像的文本文件, 该文本文件之中所涵盖的内容, 有着一条条构建镜像时所必需的指令, 还有相关说明。下面将一些最常用的指令的简短说明给列出来了, 指令并不区分大小写, 然而却约定名称得使用大写。ENV进行环境变量的设置, 对环境变量予以了定义, 在后续的那些指令里面, 便能够运用这个环境变量。ARG- 跟 ENV 所起的作用是一样的。然而其作用的范围并不相同。由 ARG 所设置出来的环境变量仅仅在特定范围内才有效。就是说仅仅只有在 build 的这个过程当中是有效的。而构建完成的镜像里面是不存在这个环境变量的。FROM那个被用来构建新镜像的基础镜像, 这条指令必然得是处于当中的第一条并非注释的指令, 此规则的唯一例外情况乃是当您期望在from参数里去使用变量的时候, 在这种情形下, FROM的前面能够放上一条或者多条ARG指令。LABEL是用来给镜像增添元数据的, 像描述、版本、作者这类, 能够指定好多标签, 并且每个标签指令都是一组键值对句号。ADD具备这样一种功能, 它是专门用来把文件以及目录, 从选定的指定源处, 复制到镜像之上的指定目的地的。其中, 源能够是本地的文件, 或者是目录, 又或者是URL链接。一旦源文件属于本地tar归档文件, 那么它就会自动地进行解压缩, 之后进入到映像当中。COPY- 与ADD类似但源只能是本地文件或目录。RUN有关此当中所指定的命令, 将会于build进程期间予以执行, 每一条运行指令, 都会在当下镜像的顶部生成一个全新的层。CMD用来专门指明, 在运行容器之际, 将会据此执行的命令。并且, 在其中仅仅能够使用一条CMD指令。存在一种指令, 它和 RUN 指令相类似, 其作用是用来运行程序, 然而, 这二者运行的时间点并非一致, 并非相同喔。注意, 要是当中存在着多个CMD指令, 那么仅仅是最后一个会生效, CMD指令是能够被run命令行参数里面所指定的指令给覆盖掉的。- 与CMD类似此指令定义运行容器时将执行的命令。但是, 其不会被由run所对应的、命令行参数指定的相关指令给覆盖掉, 并且, 这些命令行参数会被当作参数送去给指令所指定的那个程序。注意如果 中如果存在多个 指令仅最后一个生效。能够与CMD命令搭配来运用: 通常来讲是变参的情形下才会用到CMD, 此处的CMD等同于在进行传参操作, 举例如下。FROM nginx ENTRYPOINT [nginx, -c] # 定参 CMD [/etc/nginx/nginx.conf] # 变参为了当前的工作 , 针对 RUN, CMD 和 COPY 以及 ADD 设置此指令。USER去设置, 在运行CMD这条指令时, 还有COPY指令时, 以及ADD指令时, 所要使用的用户名或者组。- 将主机目录装载到容器。- 用于指定容器在运行时侦听的端口。将添加至映像中的文件以及目录予以排除之举, 需于上下文目录里创建一个.文件, 使得.之语法同一于Git的.文件。a镜像的创建, 通常是从Hub那儿拉取已有的镜像, 最常被使用的基本镜像, 是这样的, 因其体积微小, 且得以优化, 能够在RAM当中运行。在这个例子里头, 我们会要来开创一个Redis映像, 我们选用18.04当作基本镜像。首先创建一个目录用于存放和程序所用到的文件:mkdir ~/redis_docker进入该目录创建,内容如下FROM ubuntu:18.04 RUN apt-get update \ apt-get install -y redis-server \ apt-get clean EXPOSE 6379 CMD [redis-server, --protected-mode no]the Image接下来的步骤是去构建镜像, 要将此行为予以执行的话, 那就从所处的目录去运行下面这样的命令:build -t /redis .选项 -t进行指定, 这时镜像名称通常是以“/:tag”这种格式呈现的, 其中包含用户名跟标记, 而标记属于可选项目。构建过程的输出将如下所示Sending build context to Docker daemon 3.584kB Step 1/4 : FROM ubuntu:18.04 --- 7698f282e524 Step 2/4 : RUN apt-get update apt-get install -y gosu redis-server apt-get clean --- Running in e80d4dd69263 ... Removing intermediate container e80d4dd69263 --- e19fb7653fca Step 3/4 : EXPOSE 6379 --- Running in 8b2a45f457cc Removing intermediate container 8b2a45f457cc --- 13b92565c201 Step 4/4 : CMD [redis-server, --protected-mode no] --- Running in a67ec50c7048 Removing intermediate container a67ec50c7048 --- d8acc14d9b6b Successfully built d8acc14d9b6b Successfully tagged linuxize/redis:latest构建完成后可使用 image ls查看镜像列表。docker image lsREPOSITORY TAG IMAGE ID CREATED SIZE linuxize/redis latest d8acc14d9b6b 4 minutes ago 100MB ubuntu 18.04 7698f282e524 5 days ago 69.9MBa现在镜像已创建可以通过以下命令运行容器docker run-d-p 6379:6379 --name redis linuxize/redis后台模式运行容器, 是通过 -d 选项来告知的, 容器 6379 端口映射到主机的 6379 端口, 是借助 -p 6379:6379 选项达成的, 指定容器名称, 运用的是 --name redis 选项。运行容器时最后一个参数 /redis , 它是用于运行容器的镜像名称。容器启动时使用以下命令列出所有正在运行的容器docker container lsCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6b7d424cd915 linuxize/redis:v0.0.1 redis-server --pro… 5 minutes ago Up 5 minutes 0.0.0.0:6379-6379/tcp redis结论本教程只是介绍运用构建镜像的基础内容, 若想要知晓关于怎样编写以及最佳实践的更多讯息, 那就去参阅有关最佳实践的相关内容, Best for |。
延伸阅读

更多相关文章

2026/10/31 23:07:49

FPGA基带与中频处理:同步检波、CIC与同步环路的工程实现

1. 先理清基带和中频在系统里的分工 做通信相关的FPGA开发,我有个习惯:拿到需求先不动代码,先把“数据流”画出来。别小看这一步,基带与中频的FPGA算法实现,本质上不是“写代码”,而是用硬件资源搭出一条能…

2026/10/21 16:28:12

运放DC参数详解:失调电压、偏置电流、开环增益、CMRR与PSRR

做硬件这几年,运放数据手册我看过不下百份,但说实话,刚入行那会儿翻开参数表,心里是发怵的。几十项参数里,Vos、Ib、Ios、Avol、CMRR、PSRR这些DC参数,名字个个都认识,真正用起来却经常被坑。我…

2026/10/31 23:11:20

LabVIEW JKI状态机实战:旧VI重构三步法

1. 项目概述:为什么一个“状态机”能救活你积灰三年的VI?在某高校自动化实验室的角落,我见过一台运行了七年的数据采集系统——它的主VI图标上还贴着2017年LabVIEW版本的标签纸,连线像毛线团一样缠绕在前面板背后,每次…

2026/10/31 23:11:20

外卖平台费用分配机制解析与行业监管探讨

1. 外卖平台费用分配争议的行业现状最近一则"外卖程序员爆黑幕"的消息在社交媒体引发热议,揭露了外卖平台在费用分配上存在的不透明操作。作为从业多年的互联网观察者,我认为有必要对这个现象进行专业解读。当前外卖行业的收费结构主要包括三部…

2026/10/31 23:11:20

AI生成Vue组件的可复用模式与工程化实践

1. 这不是玄学,是可提取的模式:H35项目里组件复用的“代码指纹”我第一次在AI生成的Vue代码里发现那个规律时,手里的咖啡凉了都没察觉。那是一段用于直播弹幕渲染的组件,结构干净得不像人写的——props定义工整、slot命名统一、生…

2026/10/31 23:11:20

LangGraph多智能体系统路由层纯净架构设计与实践

1. 项目背景与问题定位在LangGraph的多智能体系统中,路由层(Router)的设计初衷是作为纯粹的决策中枢,仅负责根据输入选择最合适的工具或子智能体。但在实际开发中,我们经常发现Router层逐渐演变成了"全能管家",不仅承担…

2026/10/31 23:06:19

云端GPU与PyCharm远程开发实战指南

1. 项目概述:云端GPU与PyCharm的强强联合在深度学习模型训练、大规模数据分析和复杂数值计算等场景中,GPU算力不足是开发者经常遇到的瓶颈。本地设备往往难以满足这些算力密集型任务的需求,而购置专业级显卡又面临成本高、维护难的问题。云端…

2026/10/30 20:55:10

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/30 20:55:10

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/31 22:14:20

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/31 0:02:41

猫狗目标检测数据集:VOC/COCO/YOLO三格式一体化实战包

简介:本资源是一套面向计算机视觉初学者与YOLO目标检测实践者的猫狗图像数据集及配套开发工具包,专为快速上手目标检测模型训练而设计。资源包含1000张真实场景高清猫狗图片,标注质量高,同时提供VOC(XML)、…

2026/10/31 0:02:41

HDU2017多校标程复现:算法竞赛工程化真题沙盒

简介:本资源为2017年HDU多校联合训练第一场官方配套资料,面向ACM程序设计竞赛备赛学生、算法爱好者及高校编程集训队成员,旨在提供权威解题参考与完整测试验证环境。压缩包共40个文件,含15份C标程(覆盖全部赛题&#x…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑