Dockerfile指令

Dockerfile指令

1、Dockerfile指令?

1)、COPY:类似ADD,将我们的文件拷贝到镜像中,也就是复制本地(宿主机)上的文件到镜像。

COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]

2)、ADD:复制并解压(宿主机)上的压缩文件到镜像。

ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]

3)、RUN:镜像构建的时候需要运行的命令,执行镜像里的命令,跟在Linux执行命令一样。

RUN ["executable", "param1", "param2"]

4)、CMD:容器启动后(docker run)执行的命令,多个CMD只会执行最后一个,可以被代替。

CMD ["<可执行文件或命令>","<param1>","<param2>",...]

CMD ["<param1>","<param2>",...]:该写法是为 ENTRYPOINT 指令指定的程序提供默认参数

CMD指令指定的程序可被docker run命令行参数中指定要运行的程序所覆盖。

5)、ENTRYPOINT:容器启动后执行的命令,多个只会执行最后一个,可以追加命令。

ENTRYPOINT ["<executeable>","<param1>","<param2>",...]

在执行docker run的时候可以指定ENTRYPOINT运行所需的参数。

CMD跟ENTRYPOINT的区别:

CMD可以作为ENTRYPOINT的参数,且会被yaml文件里的command覆盖。

CMD跟RUN的区别:

CMD在docker run时运行,RUN是在docker build。

FROM nginx
ENTRYPOINT ["nginx", "-c"] # 定参
CMD ["/etc/nginx/nginx.conf"] # 变参
docker run nginx:test => nginx -c /etc/nginx/nginx.conf
docker run nginx:test -c /etc/nginx/new.conf => nginx -c /etc/nginx/new.conf

6)、ENV:构建的时候设置环境变量。

ENV <key1>=<value1> <key2>=<value2>...

7)、ARG:定义创建镜像过程中使用的变量,唯一一个可以在 FROM 之前定义。

ARG <参数名>[=<默认值>]

构建命令docker build中可以用–build-arg <参数名>=<值>来覆盖。

ARG与ENV作用一致,不过作用域不一样。ARG设置的环境变量仅对Dockerfile内有效,也就是说只有 docker build 的过程中有效,构建好的镜像内不存在此环境变量。

docker中arg和env的区别是:

arg是在build的时候存在的,可以在dockerfile中当做变量来使用,而env是容器构建好之后的环境变量,不能在dockerfile中当参数使用。

8)、VOLUME:镜像挂载的目录,指定容器挂载点到宿主机自动生成的目录或其他容器。

VOLUME ["<路径1>", "<路径2>"...]

在启动容器docker run的时候,我们可以通过-v参数修改挂载点。

9)、EXPOSE:保留暴露的端口或者是声明容器的服务端口(仅仅是声明)。

EXPOSE <端口1> [<端口2>...]

10)、WORKDIR:镜像的工作目录,为RUN、CMD、ENTRYPOINT、COPY和ADD设置工作目录,就是切换目录。

WORKDIR <工作目录路径>

11)、USER:为RUN、CMD和ENTRYPOINT执行命令指定运行用户。

USER <用户名>[:<用户组>]

12)、HEALTHCHECH:健康检查。

HEALTHCHECK [选项] CMD <命令>: 设置检查容器健康状况的命令。

13)、ONBUILD:当构建一个被继承DockerFile的时候就会运行ONBUILD的指令,触发指令。它后面跟的是其它指令,比如RUN,COPY等,而这些指令,在当前镜像构建时并不会被执行。只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。

ONBUILD <其它指令>

14)、LABEL:用来给镜像添加一些元数据(metadata),以键值对的形式,替换MAINTAINER。

LABEL <key>=<value> <key>=<value> <key>=<value> ...

15)、MAINTAINER:已弃用,镜像维护者姓名或邮箱地址。

MAINTAINER <name>

16)、STOPSIGNAL:设置将发送到容器退出的系统调用信号。

STOPSIGNAL signal

17)、SHELL:覆盖用于命令的shell形式的默认shell。

SHELL ["executable", "parameters"]

18)、FROM:基础镜像或者称为基于某个镜像,一切从这里开始构建,FROM前面只能有一个或多个ARG指令。

FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]

本文对 Dockerfile指令进行了简单的介绍,Dockerfile指令的具体构建请参考:

使用Dockerfile构建镜像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/46103.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.快速幂.

按位与&#xff08;Bitwise AND&#xff09;是一种二进制运算&#xff0c;它逐位对两个数的二进制表示进行运算。对于每一位&#xff0c;只有两个相应的位都为1时&#xff0c;结果位才为1&#xff1b;否则&#xff0c;结果位为0。如&#xff1a;十进制9 & 5转化为二进制&am…

ActiveMQ-CVE-2023-46604

Apache ActiveMQ OpenWire 协议反序列化命令执行漏洞 OpenWire协议在ActiveMQ中被用于多语言客户端与服务端通信。在Apache ActvieMQ5.18.2版本以及以前&#xff0c;OpenWire协议通信过程中存在一处反序列化漏洞&#xff0c;该漏洞可以允许具有网络访问权限的远程攻击者通过操作…

opencv 中如何通过欧式距离估算实际距离(厘米)

1&#xff1a;这个方法个人测试觉得是正确的&#xff0c;误差较小&#xff0c;目前满足我当前的需求&#xff0c;如果方法不对&#xff0c;请大家评论&#xff0c;完善。 2&#xff1a;确保拍摄的参照物是垂直的&#xff0c;如果不垂直&#xff0c;就会有误差&#xff0c;不垂…

Django是干什么的?好用么?

Django是一个开源的Python Web框架&#xff0c;用于快速开发高质量的Web应用程序。它提供了许多功能和工具&#xff0c;以简化常见的Web开发任务&#xff0c;如路由、请求处理、数据库管理等。 Django的优点包括&#xff1a; 简单易用&#xff1a;Django提供了清晰的文档和丰…

HASHTABLE, HASHMAP,TreeMap区别

Hashtable、HashMap 和 TreeMap 都是Java集合框架中的实现&#xff0c;它们提供了键值对映射的数据结构&#xff0c;但它们在实现细节、性能特性和使用场景上有所不同&#xff1a; 1. Hashtable: - Hashtable 是遗留下来的类&#xff0c;继承自 Dictionary 类。 - 它实现…

低代码商城构建专家:Mall-Cook

Mall-Cook&#xff1a;用Mall-Cook&#xff0c;让电商创新触手可及- 精选真开源&#xff0c;释放新价值。 概览 Mall-Cook是一个面向未来的商城低代码开发平台&#xff0c;它通过提供直观的可视化界面&#xff0c;让开发者和商家能够快速构建和部署跨平台的电商解决方案。这个…

微信小程序如何实现登陆和注册功能?

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

SQL基本查询

简单查询 单表查询 查询表的全部信息&#xff1a; --student是要查询的表 select * from student 使用别名查询表中的某个字段&#xff0c;或使用别名创建一个新的字段&#xff1a; select name as studentname from student --把查询出来的名字的列名改为学生姓名 …

服务器提交记录有Merge branch消除

背景&#xff1a;在共同开发分支release上&#xff0c;你提交了commit&#xff0c;push到服务器上时&#xff0c;发现有人先比你push了&#xff0c;所以你得先pull&#xff0c; 后再push&#xff0c;然而pull后自动产生了一个Merge branch的一个commit&#xff0c;这个commit本…

递归解决换零钱问题--回顾总结之递归的表达能力

前面为了保持叙述的流畅, 没有做太多的引申, 把总结推迟到了后面. 补上一些总结, 以防止出现 “下面呢? 下面没有了” 的尴尬. 方向性问题 虽然题目在一开始就暗示了这一点, 但首先, 我们还是要问, 它能用递归解决吗? 有点怀疑精神是好的, 既要低头走路, 更要抬头看路, 以防…

JDK14新特征最全详解

JDK 14一共发行了16个JEP(JDK Enhancement Proposals&#xff0c;JDK 增强提案)&#xff0c;筛选出JDK 14新特性。 - 343: 打包工具 (Incubator) - 345: G1的NUMA内存分配优化 - 349: JFR事件流 - 352: 非原子性的字节缓冲区映射 - 358: 友好的空指针异常 - 359: Records…

【JavaScript】解决 JavaScript 语言报错:Uncaught TypeError: XYZ is not iterable

文章目录 一、背景介绍常见场景 二、报错信息解析三、常见原因分析1. 对非数组类型使用 for...of 循环2. 对非可迭代对象使用扩展运算符3. 在 Promise.all 中传递非可迭代对象4. 使用解构赋值时&#xff0c;右侧值非可迭代 四、解决方案与预防措施1. 确保使用可迭代对象2. 使用…

一些Java集合面试题

1.总体讲一下Java集合 Java集合主要是由两大接口派生而来。一个是Collection接口&#xff0c;主要用于存放单一元素&#xff0c;主要分成Set&#xff0c;List和Queue三大类&#xff1b;另一个是Map接口&#xff0c;主要用于存放键值对元素&#xff0c;主要实现类就是HashMap、…

各种Attention|即插即用|适用于YoloV5、V7、V8、V9、V10(一)

摘要 本文总结了各种注意力&#xff0c;即插即用&#xff0c;方便大家将注意力加到自己的论文中。 SE import torch from torch import nn class SEAttention(nn.Module): """ SENet&#xff08;Squeeze-and-Excitation Networks&#xff09;中的注意力…

C++进阶(while循环——函数应用)

知识点代码框架总结 输入n组数据 &#xff0c;对n组数据里面的每一组进行处理&#xff08;输出、求和 、运算、其他&#xff09; int n;//几组数据cin >> n;//2while(n--){//对每组数据进行处理}看到下面的样例&#xff0c;肌肉型反映出上面的框架//2// 1 2 3// 4 5 6若…

虚拟机:VMware功能,安装与使用

目录 一、虚拟机介绍 二、VMware 1.介绍 2.安装 &#xff08;1&#xff09;根据提示按步骤安装​编辑 &#xff08;2&#xff09;更改软件的安装地址​编辑 &#xff08;3&#xff09;根据自己的需求选择是否需要软件更新​编辑 &#xff08;4&#xff09;根据需求选择…

自动驾驶中的人机互相接管问题讨论

一、背景 人机接管&#xff08;human takeover&#xff09;是指在自动驾驶过程中&#xff0c;当系统遇到超出其处理能力或预设安全阈值的情况时&#xff0c;将控制权交还给驾驶员的过程。这一环节的设计直接关系到自动驾驶技术的实用性与安全性&#xff0c;是目前研究和实践中…

【SQL】MySQL事务的隔离级别和幻读、脏读和不可重复读

事务的隔离级别是数据库管理系统提供的一种功能&#xff0c;用于控制事务之间的相互影响程度。常见的隔离级别包括&#xff1a; 读未提交 (Read Uncommitted)&#xff1a;允许一个事务读取另一个事务未提交的数据。 读已提交 (Read Committed)&#xff1a;一个事务只能读取另一…

Python应用爬虫下载QQ音乐歌曲!

目录&#xff1a; 1.简介怎样实现下载QQ音乐的过程&#xff1b; 2.代码 1.下载QQ音乐的过程 首先我们先来到QQ音乐的官网&#xff1a; https://y.qq.com/&#xff0c;在搜索栏上输入一首歌曲的名称&#xff1b; 如我在上输入最美的期待&#xff0c;按回车来到这个画面 我们首…

[USACO24OPEN] Smaller Averages G (单调性优化dp)

来源 题目 Bessie 有两个长度为 N的数组&#xff08;1≤N≤500&#xff09;。第一个数组的第 i 个元素为 ai​&#xff08;1≤ai​≤10^6&#xff09;&#xff0c;第二个数组的第 i个元素为bi​&#xff08;1≤bi​≤10^6&#xff09;。 Bessie 希望将两个数组均划分为若干非空…