004-Dockerfile-ADD

Docker基础教程(103)Dockerfile指令之添加文件的ADD命令:复制粘贴已Out!Docker ADD命令让文件添加“骚”起来 Docker的ADD命令远不止“复制文件”这么简单!它既能解压压缩包“一键部署”,还能从URL直接拉取远程资源,堪称Dockerfile中的“瑞士军刀”。本文将深度剖析ADD命令的隐藏技能,通过5个实战示例展示其灵活性与陷阱,最后对比COPY命令的适用场景,助你告别文件管理混乱,效率直接拉满! 阅读详情

语法

语法 1

ADD <src>... <dest>

语法 2

ADD ["<src>,... "<dest>"] (包含空格的路径需要此格式)

作用 & 描述

ADD 指令从指定 中复制新文件,目录或远程文件,并将它们添加到指定 路径上镜像的文件系统中;

可以指定多个资源,但如果它们是文件或目录,则它们必须相对于正在构建的源目录(构建上下文);

每个 都可能包含通配符,匹配将使用 Go 的 filepath.Match 规则完成;

ADD hom* /mydir/             # * 号匹配所有字符,添加所有以 hom 开头的文件到 /mydir/目录中
ADD hom?.txt /mydir/         # ? 问号匹配单个字符

是一个绝对路径或一个相对于 WORKDIR 的路径:

ADD test relativeDir       # 将 “test” 添加到 `WORKDIR`/relativeDir/ 目录中
ADD test /absoluteDir/     # 将 “test” 添加到 /absoluteDir/ 目录中

添加包含特殊字符(例如:[ and ])的文件或目录时,需要按照Golang规则转义这些路径,以防止它们被视为某种模式。例如,要添加名为 arr[0].txt 的文件,请使用以下命令:

ADD arr[[]0].txt /mydir/   # 将文件名为 "arr[0].txt" 拷贝到 /mydir/ 目录中

当 是远程 URL 文件的情况下,目标将具有 600 权限。如果正在检索的远程文件具有 HTTP Last-Modified 标头,则来自该标头的时间戳将用于设置 mtime 目标文件。但是,与在处理期间处理的任何其他文件一样 ADD,mtime 将不包含在确定文件是否已更改且应更新回到缓存中。

注意

注意 1

如果通过传递 Dockerfile STDIN(docker build - < somefile)进行构建,则没有构建上下文,因此Dockerfile只能包含基于 URL 的 ADD 指令。你还可以通过 STDIN:(docker build - < (archive.tar.gz)传递压缩文档 Dockerfile,该存档诶与存档的根目录,其余存档将用作构建的上下文。

注意 2

如果你的网址文件都使用认证保护,你讲需要使用 RUN get,RUN curl 或使用其它工具,容器内的 ADD 指令不支持验证。

注意 3

ADD 如果内容已更改,则第一个遇到的指令将使来自Dockerfile的所有后续指令的告诉缓存无效。这包括使缓存无效以获取 RUN 指令。有关详细信息,请参阅 ”Dockerfile 最佳实践指南“

注意 4

  • 路径必须位于构建的上下文中,不能添加 …/something /something,因为docker构建的第一步是将上下文目录(子目录)发送到docker守护进程;
  • 如果是URL且不以 / 结尾,则从 URL 下载文件将其复制到;
  • 如果是URL并且以 / 结尾,则从 URL 腿短文件名,并将文件下载到/。例如:ADD http://example.com/foobar/ 将创建文件/foobar。URL必须具有非常重要的路径,以便在这种情况下可以发现适当的文件名(http://example.com将不起作用);
  • 如果是目录,则复制目录的全部内容,包括文件系统元数据;

注意 5

不复制目录本身,值复制其内容;

注意 6

如果是以可识别的压缩格式(identity, gzip, bzip2 或 xz)的本地tar存档,则将其解压缩为目录。远程 URL 中的资源不会被解压缩。复制或解压缩目录时,它具有相同的行为 tar -x ,结果是:

  1. 无论在目标路径上存在什么
  2. 源树的内容,在逐个文件的基础上解决了有利于"2."的冲突
    注意:
    文件是否被表示为可识别的压缩格式仅基于文件的内容而不是文件的名称来完成。例如,如果一个空文件碰巧以此结束,.tar.gz 则不会将其识别为压缩文件,也不会生成任何类型的解压缩错误消息,而是将文件简单地复制到目标。
  3. 如果是任何其它类型的文件,则将其与元数据一起单独复制。在这种情况下,如果以尾部/结束,则将其视为目录,并将写入内容/base()
  4. 如果直接或由使用通配符指定了多个资源,则必须是目录,并且必须以斜杠 / 结尾
  5. 如果不以尾部斜杠结束,则将其视为常规文件,的内容将写入
  6. 如果不存在,则会在其路径中创建所有缺少的目录
微服务实例构建成 docker 镜像实例_jar如何打docker镜像 本文主要介绍如何将微服务实例的 jar 构建成 docker 镜像。 阅读详情

相关推荐

5分钟搞懂SCMA:稀疏码多址接入的核心原理与实战应用

本文深入浅出地解析了SCMA(稀疏码多址接入)的核心原理与实战应用。通过对比传统正交多址技术,阐释了SCMA如何通过非正交叠加和稀疏码本设计,实现远超资源单元数的用户接入,从而有效应对5G海量机器通信(mMTC)的挑战。文章还探讨了其在上行海量连接、免授权接入等场景的应用潜力及工程实现中的关键考量。

zeta9的博客 264

Dockerfile(10) - ADD 指令详解

一段话总结完 ADD 作用:添加内容到镜像 格式:ADD <src> <dest> 详解:该命令将复制指定的<src> 路径下内容到镜像中的<dest> 路径下 <src>:可以是Dockerfile 所在目录的一个相对路径(文件或目录);也可以是一个URL;还可以是一个tar 文件(自动解压为目录) <dest&...

qq_33801641的博客 2万+

立创EDA开源项目:小北极冰冰杯(夏)——基于ESP32-C3的智能半导体制冷杯硬件设计与功能解析

本文详细解析了基于ESP32-C3的智能半导体制冷杯——小北极冰冰杯的硬件设计与核心功能。项目利用半导体制冷片实现快速降温,并集成了PWM智能调速散热、四路温度监控、杯具检测及PD/DC双电源输入等实用功能。文章深入剖析了其硬件架构、控制逻辑及实战注意事项,为嵌入式开发与智能硬件爱好者提供了宝贵的参考。

weixin_33245447的博客 271

Dockerfile - ADD 指令详解

chown仅适用于 linux 上的 dockerfile,在 window 上没有用户、组的概念。

tian830937的专栏 6483

3D IC中Memory-on-Logic堆叠测试的DFT解决方案与工程实践

在半导体行业,随着摩尔定律逼近物理极限,3D IC技术通过芯片垂直堆叠实现性能提升和异构集成,已成为重要发展方向。其核心原理是利用硅通孔(TSV)或微凸块实现芯片间电气互连,将多个不同功能的芯片(如逻辑芯片与存储芯片)集成在一个封装内。这项技术的核心价值在于能大幅提升系统性能、降低功耗并实现更小的封装尺寸。然而,芯片堆叠后,传统的测试方法面临巨大挑战,尤其是测试访问存在物理屏障,无法直接探测被覆盖的芯片接口。为此,可测试性设计(DFT)成为确保3D IC可靠性与量产可行性的关键技术。它通过在设计阶段植入专用

weixin_42521058的博客 632

新四化浪潮下,中年整车诊断工程师的黄金突围路

摘要 本文探讨了汽车电子诊断工程师在当前行业变革中的独特优势与发展路径。作者作为从业者指出,整车诊断岗位在汽车"新四化"浪潮中呈现"逆生长"特性:技术壁垒高、经验复利强、市场需求持续增长。中年工程师凭借丰富的案例积累和实战经验成为行业稀缺人才,薪资水平显著高于同龄段其他技术岗位。文章分析了四条职业发展路径(技术专家、技术管理、细分深耕、横向拓展),并警示了三大职业风险(执行层局限、技术停滞、成果沉淀不足)。最后提出具体建议,强调掌握UDS高阶、DoIP以太网诊断等核心技术的重要性,为中年技术人提供了清晰的职

Soly_kun的博客 309

Dockerfile中ADD文件用法

在编写Dockerfile时经常需要拷贝文件或文件夹的操作,这时就需要用到ADD和COPY指令。个人认为对于拷贝文件或文件夹的操作使用ADD指令已经足够了,完全不用使用COPY指令(网上的一种说法是COPY是一种简化版ADD)。下面详细介绍一下ADD指令的几种常用操作: 一.拷贝单个文件到指定目录 这个比较简单,用法是:ADD 宿主机文件的全路径 docker容器下的文件夹路径,示例如下: #拷贝当前目录下的test.jar到/usr/bin目录下 ADD ./test.jar /usr/bin/

u012149181的博客 2万+

【深度学习】普通卷积、DWconv(逐深度卷积)与PWconv(逐点卷积)以及DSconv(深度可分离卷积)

深度可分离卷积(Depthwise Separable Convolution)通过将常规卷积分解为逐通道卷积(Depthwise)和逐点卷积(Pointwise)两步,显著减少了参数量和计算成本。常规卷积同时提取空间和通道特征,而深度可分离卷积先对每个通道单独进行空间卷积,再用1×1卷积调整通道数。以输入3通道、输出4通道的64×64图像为例,常规卷积需108个参数,而深度可分离卷积仅需39个参数,减少了约2/3。这种结构在轻量级网络(如MobileNet)中广泛应用,可在保持性能的同时降低计算资源需求。

猫天意的博客 4067

dockerfile常用命令(ADD 特别说明)

dockerfile常用命令(ADD 特别说明)

Go_ahead_forever的博客 1878

Flatten 层的深度理解与运用

Flatten 层的深度理解与运用

你要拥有一个你喜欢并且热爱的人生 7035

D004.1 Dockerfile例子详解及常用指令

# 0x00 教程内容 1. 构建Hadoop集群例子详解 2. Dockerfile额外指令说明

邵奈一的博客 730

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

D004 复制粘贴玩大数据之Dockerfile安装Zookeeper集群

0x00 教程内容 0x01 Dockerfile文件的编写 1. 编写Dockerfile文件 2. 编写Dockerfile文件的关键点 3. 完整的Dockerfile文件参考 0x02 校验zk集群前准备工作 1. 环境及资源准备 2. 添加zk配置文件及启动zk指令信息 0x03 校验是否zk安装成功 1. 生成镜像 2. 生成容器并初始化zk集群 3. 启动集群并查看进程 0xFF 总结

邵奈一的博客 1428

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Dockerfile 详解

000-Dockerfile-简介 001-Dockerfile - FROM 002-Dockerfile-RUN 003-Dockerfile-ENV 004-Dockerfile-ADD 005-Dockerfile-COPY 006-Dockerfile-EXPOSE 007-Dockerfile-CMD 008-Dockerfile-ENTRYPOINT 009-Dockerfile-...

dejunyang的博客 1691

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Dockerfile部署ubuntu

【代码】Dockerfile部署ubuntu。

正态分个布 1152

使用Dockerfile构建docker lnmp环境

一、mysql 1、创建 Dockerfile mkdir mysql # 创建一个目录存放之后的Dockerfile,目录名无所谓 cd mysql # 进入目录 vi Dockerfile # 创建Dockerfile(文件名可以修改)   将如下内容填入 Dockerfile中 FROM docker.io/centos MAINTAINER rsl...

aiying9673的博客 513

Mariadb dockerfile测试

[root@169_test mariadb10.3]# ll总用量 8-rw-r--r-- 1 root root 180 6月 6 10:25 Dockerfile-rw-r--r-- 1 root root 173 6月 6 10:26 MariaDB.repo[root@169_test mariadb10.3]# cat DockerfileFROM ce...

weixin_33775572的博客 463

容器技术-Dockerfile指令总结

一、关于执行命令方面 https://www.jianshu.com/p/004bb28593a5 1 RUN 和 CMD 1.1 RUN 是在构建一个镜像时,在构建过程中的容器内运行的命令,并提交结果。 每个 RUN 指令都会给目前正在创建的镜像增加一层。 1.2 CMD 是当使用一个镜像运行为一个容器的时候默认运行的命令。 CMD指令在构建时不执行任何操作,只是为运行一个容器时,提供一个默认执行的命令。 一个镜像中只能有一个 CMD 指令,多个的话,最后一个生效。 其指定的命令可以被运行一个

qq_22648091的博客 494

D006 复制粘贴玩大数据之Dockerfile安装HBase集群

教程目录0x00 教程内容0x01 Dockerfile文件的编写1. 编写Dockerfile文件2. 编写Dockerfile文件的关键点3. 完整的Dockerfile文件参考0x02 校验HBase集群前准备工作1. 环境及资源准备0x03 校验是否HBase安装成功1. 修改生成容器脚本2. 生成镜像2. 生成容器3. 启动集群并查看进程0xFF 总结 0x00 教程内容 Docker...

邵奈一的博客 1087

部署实战:将regnety_004.pycls_in1k模型集成到生产环境的最佳实践指南

RegNetY-400MF图像分类模型(regnety_004.pycls_in1k)是一个轻量级但高效的计算机视觉模型,专为生产环境优化设计。本文将为您提供完整的部署指南,从模型特性分析到实际生产集成,帮助您快速将这一高性能模型应用到您的AI项目中。😊 ## 为什么选择RegNetY-400MF模型? RegNetY-004.pycls_in1k模型是一个经过ImageNet-1k数据集预

gitblog_00991的博客 659

Docker镜像的创建

【代码】Docker镜像的创建。

Ybaocheng的博客 1825

flask服务打包成docker镜像

flask打包成dockers镜像

weixin_57742734的博客 1988

docker制作镜像 监控

一、自动制作dockerfile。启动双服务(FROM+CMD+RUN+ENV+ADD) RUN yum install httpd openssh-server -y RUN echo ’ 123456’ |passwd --stdin root CMD /etc/ init.a/ sshd start; /usr/ sbin/httpd -D FOREGROUND RUN yum instal...

xiha的博客 863

Docker教程02

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Jin的随手笔记 1935

微服务实例构建成 docker 镜像实例

优快云博客专家🏆,华为云享专家🏆,Linux、C/C++、云计算、物联网、面试、刷题、算法尽管咨询我,关注我,有问题私聊!

Muti-Agent 2904
上一篇: 003-Dockerfile-ENV
下一篇: 005-Dockerfile-COPY
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值