[Docker] Dockerfile常用保留字

FROM

基础镜像,当前新镜像是基于哪个镜像的,指定一个已经存在的镜像作为模板。第一条必须是from

MAINTAINER

镜像维护者的姓名和邮箱地址

RUN

容器构建时需要运行的命令,也就是在 docker builder 时运行
两种格式:

  • shell格式,RUN
  • exec格式,RUN [‘可执行文件’, ‘参数一’ ,’参数二’]

EXPOSE

当前容器对外暴露出的端口

WORKDIR

指定在创建容器后,终端默认登录进来的工作目录,一个落脚点

USER

指定该镜像以什么样的用户去执行,如果都不指定,默认是root

ENV

用来在构建镜像过程中设置环境变量,在其他指令中可以直接使用这些环境变量。比如:

ENV MY_PATH /user/mytest
WORKDIR $MY_PATH

VOLUME

容器数据卷,用于数据保存和持久化工作

ADD

将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包。这个命令相当于是 COPY + 解压的合体。

COPY

类似ADD,拷贝文件和目录到镜像中。

将从构建上下文目录中

COPY src dest

COPY [“src”, “dest”]

CMD

指定容器启动后要干的事情。CMD指令的格式和RUN相似,也是shell和exec两种。

两种格式:

  • shell格式,CMD
  • exec格式,CMD [‘可执行文件’, ‘参数一’ ,’参数二’]
  • 参数列表格式:CMD [‘参数1′,’参数2’,…]。在指定了ENTRYPOINT指令后,用CMD指定具体的参数。

Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后的参数替换

ENTRYPOINT

也是用来指定一个容器启动时要运行的命令。类似于CMD指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当做参数送给ENDTRYPOINT指令指定的程序。

ENTRYPOINT可以和CMD一起用,一般是变参参会使用CMD,这里的CMD等于是在给ENTRYPOINT传参。
当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其命令而是将CMD的内容作为参数传递给了ENTRYPOINT指令。
他俩组合会变成

CMD与RUN的区别:CMD在docker run时运行,RUN是在 docker build时运行。

Original: https://www.cnblogs.com/knqiufan/p/16272664.html
Author: knqiufan
Title: [Docker] Dockerfile常用保留字

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570455/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 动态规划三种基本背包问题模板

    1.01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容…

    Java 2023年6月16日
    070
  • RabbitMQ-工作模式

    RabbitMQ演示代码+Spring/SpringBoot整合RabbitMQ ✨ (GitHub仓库链接)[https://github.com/2537422279/Rabb…

    Java 2023年6月5日
    075
  • Java基础-JVM篇

    1.1 .线程 ​ 这里所说的线程指程序执行过程中的一个线程实体。JVM 允许一个应用并发执行多个线程。Hotspot JVM 中的 Java 线程与原生操作系统线程有直接的映射关…

    Java 2023年6月8日
    067
  • 机器学习(6)K近邻算法

    k-近邻,通过离你最近的来判断你的类别 例子: 定义:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近的样本中大多数属于某一类别),则该样本属于这个类别 K近邻需要做标准化…

    Java 2023年6月8日
    072
  • nginx防盗链接的使用

    以 local.hyperf.com为例 nginx配置文件如下 至少需要一个 Hyperf 节点,多个配置多行 upstream hyperf { # Hyperf HTTP S…

    Java 2023年5月30日
    056
  • EasyExcel配置步骤

    1.介绍 EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目参考https://blog.csdn.net/u013044713/article/deta…

    Java 2023年6月9日
    061
  • 69.修炼爱情

    dfsd posted @2022-09-28 08:46 随遇而安== 阅读(17 ) 评论() 编辑 Original: https://www.cnblogs.com/55z…

    Java 2023年6月7日
    059
  • web开发技术-过滤器

    纪录自己的学习过程,帮助记忆 1、简介 过滤器是服务器端的一个组件,可以接收用户端的请求和响应信息,并且对这些信息进行过滤 过滤器不处理结果,只做一些辅助性操作 2、过滤器的工作原…

    Java 2023年6月13日
    088
  • 子程序(一个方法)中出现多个返回语句

    子程序中不建议出现过多的返回语句,尽量减少子程序返回语句的数量。 Original: https://www.cnblogs.com/txzn/p/16600520.htmlAut…

    Java 2023年6月5日
    070
  • 推荐两篇文章,关于Java Project中的两种数据访问设计模式Dao与Repository

    推荐两篇文章,关于Java Project中的两种数据访问设计模式Dao与Repository https://stackoverflow.com/questions/855012…

    Java 2023年6月7日
    074
  • Java 并发编程

    基础知识 1. 为什么要使用并发编程 提升多核CPU的利用率:一般来说一台主机上的会有多个CPU核心,我们可以创建多个线程,理论 上讲操作系统可以将多个线程分配给不同的CPU去执行…

    Java 2023年6月9日
    0164
  • 如何搭建一个WEB服务器项目(三)—— 实现安卓端联网登录

    安卓端调用服务器登录函数进行验证登录 观前提示:本系列文章有关服务器以及后端程序这些概念,我写的全是自己的理解,并不一定正确,希望不要误人子弟。欢迎各位大佬来评论区提出问题或者是指…

    Java 2023年6月8日
    098
  • redis主从、哨兵主备切换搭建一步一步图解实现

    Redis支持主从复用。数据可以从主服务器向任意数量的从服务器上同步,同步使用的是发布/订阅机制。Mater Slave的模式,从Slave向Master发起SYNC命令。 可以是…

    Java 2023年6月5日
    089
  • 01、springboot 目录

    目录: 主要想把自己的学习成功记录下来,如果看到哪里写的不对,或者不明白都可以留言指正,共同进步 源码 02、SpringBoot 启动 总流程03、SpringBoot 启动 执…

    Java 2023年6月13日
    0108
  • Windows常用命令手册

    cmd 命令手册 端口命令 查看端口占用详情 netstat -ano 查找过滤命令 findstr (相似Linux中grep) 例如需要查找8080端口占用详情:netstat…

    Java 2023年6月7日
    071
  • SpringBoot 多环境配置文件切换

    背景 很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用…

    Java 2023年6月5日
    070
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球