说明

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

在Dockerfile 中命令书写对先后顺序及表示其执行对顺序,在书写时需注意。

约定

命令不区分大小写,但是命名约定为全部大写。

常用命令

FROM

所有Dockerfile 都必须以 FROM 命令开始。

FROM 命令会指定镜像基于哪个基础镜像来进行创建,后面对命令也会机会这个镜像来执行。

FROM 命令可以多次使用,表示创建多个镜像。

语法如下:

FROM [images name]

例如:

FROM mcr.microsoft.com/dotnet/aspnet:5.0-focal AS base

WORKDIR

WORKDIR 命令用于指定 RUNCMDENTRYPOINT 等命令对工作目录。

语法如下:

WORKDIR [path]

例如:

WORKDIR /app

EXPOSE

EXPOSE 用于指定容器在运行时监听对端口

语法如下:

EXPOSE [port]

例如:

EXPOSE 8080

COPY

COPY 复制指令,从上下文目录中复制文件或者目录到容器里指定路径。

语法如下:

COPY [path,newpath]

例如:

COPY src/nuget.config nuget.config

ADD

ADD 指令和 COPY 的使用格类似(同样需求下,官方推荐使用 COPY)。功能也类似

在执行 <源文件> 为 tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,会自动复制并解压到 <目标路径>。

在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。

语法如下:

ADD [path,newpath]

例如:

ADD src/nuget.config nuget.config

RUN

RUN 在shell或者exec的环境下执行的命令。RUN 指令会在新创建的镜像上添加新的层面,接下来提交的结果用在Dockerfile的下一条指令中。

语法如下:

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

例如:

-- 还原项目资源包
RUN dotnet restore "HanddayRetail.MallApi/HanddayRetail.MallApi.csproj" --configfile "nuget.config"
-- 构建项目
RUN dotnet build "HanddayRetail.MallApi/HanddayRetail.MallApi.csproj" -c Release -o /app/build

CMD

CMD 类似于 RUN 指令,用于运行程序,CMD 指令指定的程序可被 docker run 命令行参数中指定要运行的程序所覆盖。,但二者运行的时间点不同:

CMD 在docker run 时运行。

RUN 是在 docker build。

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

注意:如果 Dockerfile 中如果存在多个 CMD 指令,仅最后一个生效。

ENTRYPOINT

ENTRYPOINT 配置给容器一个可执行的命令,这意味着在每次使用镜像创建容器时一个特定的应用程序可以被设置为默认程序。同时也意味着该镜像每次被调用时仅能运行指定的应用。

类似于CMD,Docker只允许一个ENTRYPOINT,多个ENTRYPOINT会抵消之前所有的指令,只执行最后的ENTRYPOINT指令。

语法如下:

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

例如:

ENTRYPOINT ["dotnet", "HanddayRetail.MallApi.dll"]

Dockerfile 中对常用命令详解的更多相关文章

  1. hbase shell基础和常用命令详解(转)

    HBase shell的基本用法 hbase提供了一个shell的终端给用户交互.使用命令hbase shell进入命令界面.通过执行 help可以看到命令的帮助信息. 以网上的一个学生成绩表的例子来 ...

  2. samtools常用命令详解(转)

    转自:samtools常用命令详解 samtools的说明文档:http://samtools.sourceforge.net/samtools.shtml samtools是一个用于操作sam和ba ...

  3. cisco常用命令详解

    cisco常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用命令用法展示 1.命令行模式的来回切换 yinzhengjie>enable #从用户模式切换到 ...

  4. H3C常用命令详解

    H3C常用命令详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 1.关闭后台日志输出 <yinzhengjie>sys [yinzhengjie]undo info- ...

  5. hbase shell基础和常用命令详解

    HBase是Google Bigtable的开源实现,它利用Hadoop HDFS作为其文件存储系统,利用Hadoop MapReduce来处理HBase中的海量数据,利用Zookeeper作为协同服 ...

  6. Tmux 的常用命令详解

    Tmux 的常用命令详解  常用命令: tmux #开启tmux tmux ls #显示已有tmux列表(C-b s) tmux attach-session -t 数字 #选择tmux C-b c ...

  7. Hexo系列(三) 常用命令详解

    Hexo 框架可以帮助我们快速创建一个属于自己的博客网站,熟悉 Hexo 框架提供的命令有利于我们管理博客 1.hexo init hexo init 命令用于初始化本地文件夹为网站的根目录 $ he ...

  8. 【转载】windbg 常用命令详解

    windbg 常用命令详解 https://blog.csdn.net/chenyujing1234/article/details/7743460 vertarget 显示当前进程的大致信息 lmv ...

  9. DOS常用命令详解

    DOS常用命令详解 dir 列文件名 deltree 删除目录树 cls 清屏 cd 改变当前目录 copy 拷贝文件 diskcopy 复制磁盘 del 删除文件 format 格式化磁盘 edit ...

随机推荐

  1. super.getClass()方法调用?

    下面程序的输出结果是多少? import java.util.Date; public class Test extends Date{ public static void main(String[ ...

  2. Java并发机制(1)--线程状态与方法(转)

    Java并发编程:Thread类的使用 个人总结:参考:博客园-海子-http://www.cnblogs.com/dolphin0520/p/3920357.html 参考:https://blog ...

  3. Oracle入门基础(十二)一一储存过程及触发器

    1.第一个存储过程 打印Hello World 调用存储过程: 1.exec sayhelloworld(); 2.begin sayhelloworld(); sayhelloworld(); en ...

  4. Java 中如何将字符串转换为整数?

    String s="123"; int i; 第一种方法:i=Integer.parseInt(s); 第二种方法:i=Integer.valueOf(s).intValue();

  5. System.getenv和getProperty的区别

    /** * System.getenv()是获取---环境变量(environment variables), * 系统层面的,好比我linux系统里的.bash_profile文件里面的变量 * 返 ...

  6. 转载:C++快速排序

    快速排序的基本实现 转载至:https://www.cnblogs.com/miracleswgm/p/9199124.html 快速排序算法是一种基于交换的高效的排序算法,它采用了分治法的思想: 1 ...

  7. redis 使用详解

    前戏: 又到了最喜欢的前戏部分,这个前戏可能有点长: Nosql和sql的区别 存储结构与mysql这一种关系型数据库完全不同,nosql存储的是KV形式 应用场景不同,sql支持关系复杂的数据查询, ...

  8. css写作建议和性能优化小结

    1.前言 还有几天就到国庆中秋了,快要放假了,先祝大家节日快乐!之前写过js的写作建议和技巧,那么今天就来聊聊css吧!说到css,每一个网页都离不开css,但是对于css,很多开发者的想法就是,cs ...

  9. 【小程序开发】 点击button按钮,引导用户授权

    一. 前言 小程序官方文档,上面说明 wx.getUserInfo(OBJECT) 注意:此接口有调整,使用该接口将不再出现授权弹窗,请使用 <button open-type="ge ...

  10. java中 什么叫隐藏(Hide)? 最好给个例子

    4.隐藏   技术核心和实例前面已经给出,这里只是给出大家对这种现象的一个定义而已,马克-to-win:子类重新定义一个与父类那里继承来的域变量完全相同的变量,称为域的隐藏.这里所谓隐藏是指子类拥有了 ...