Dockerfile引用的官网文档:https://docs.docker.com/engine/reference/builder/
编写Dockerfiles的最佳实践的官网文档:https://docs.docker.com/develop/develop-images/dockerfile_best-practices/
Docker可以通过阅读来自的指令自动构建图像 Dockerfile。Dockerfile是一个文本文档,其中包含用户可以在命令行上调用以组合图像的所有命令。使用docker build 用户可以创建一个连续执行多个命令行指令的自动构建。
用法
docker build命令Dockerfile根据上下文构建图像。构建的上下文是指定位置PATH或的文件集URL。这PATH是本地文件系统上的目录。这URL是一个Git存储库位置。
递归处理上下文。因此,a PATH包括所有子目录,URL包括存储库及其子模块。此示例显示使用当前目录作为上下文的构建命令:
例如:docker build -f ./Dockerfile -t microsoft/dotnet:v1 .(别忘记了后面有个点,详细了解docker build用法)
构建由Docker守护程序运行,而不是由CLI运行。构建过程所做的第一件事是将整个上下文(递归地)发送到守护进程。在大多数情况下,最好以空目录作为上下文,并将Dockerfile保存在该目录中。仅添加构建Dockerfile所需的文件。
警告:不要用你的根目录下,/作为PATH因为它会导致生成到您的硬盘驱动器的全部内容传输到码头工人守护进程。
要在构建上下文中使用文件,请Dockerfile引用指令中指定的文件,例如COPY指令。要提高构建的性能,请通过向.dockerignore上下文目录添加文件来排除文件和目录。有关如何创建.dockerignore 文件的信息,请参阅此页面上的文档。
传统上,它Dockerfile被调用Dockerfile并位于上下文的根中。您可以使用-f标志docker build来指向文件系统中任何位置的Dockerfile。
附菜鸟教程对docker build命令参数的用法:http://www.runoob.com/docker/docker-build-command.html
指令集的功能用法
Dockerfile有十几条命令可用于构建镜像
Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数。其产出为一个新的可以用于创建容器的镜像。
指令
说明
FROM
指定所创建镜像的基础镜像,FROM指令必须指定且需要写在其他指令之前.
如果本地镜像不存在,会去Docker Hub下载指定镜像,Dockerfile创建多个镜像使用多条FROM语句.
支持三种格式:
FROM <image>  FROM <image>:<tag>  FROM <image>@<digest>
示例:
FROM microsoft/dotnet:2.2-aspnetcore-runtime
RUN
执行命令, 是启动容器时才指定运行的指令
RUN有两种形式:
1.RUN <command>(shell表单,该命令在shell中运行,默认情况下/bin/sh -c在Linux或cmd /S /CWindows 上运行)
2.RUN ["executable", "param1", "param2"](执行形式)
示例:
RUN echo "hello world"
CMD
指定启动容器默认执行的命令
每个Dodckerfile 只能有一条CMD命令,如果指定了多条命令,只有最后一条会被执行
CMD有三种形式:
CMD ["executable","param1","param2"](执行形式,这是首选形式)
CMD ["param1","param2"](作为ENTRYPOINT的默认参数)
CMD command param1 param2(在Shell中使用)
示例: CMD [ "dotnet","XXX.dll" ]
LABEL
指定生成镜像的元数据标签信息
格式: LABEL <KEY>=<VALUE>
示例: LABEL version=”1.0”
MAINTAINER
指定维护者信息(已过时),格式为MAINTAINER name
建议使用LABEL代替,例如:LABEL maintainer=”cxt@docker.com”
EXPOSE
声明镜像内服务所监听的端口
示例:EXPOSE 80
ENV
指定环境变量,环境变量可以在后续RUN指令中使用
格式: ENV <key> <value>
示例: ENV JAVA_HOME /path/to/java
ADD
ADD指令用于复制文件,复制指定的<src> 路径下的内容到容器中的<dest>路径下,<src>可以为URL;如果为tar文件,会自动解压到<dest>路径下
格式: ADD <src>... <dest>
COPY
复制本地主机的<src>路径下的内容到镜像中的<dest>路径下;COPY指令和ADD指令类似,COPY不支持URL和压缩包一般情况下推荐使用COPY,而不是ADD
格式: COPY <src>... <dest>
示例:COPY nginx.conf /etc/nginx/nginx.conf
ENTRYPOINT
指定镜像的默认入口
ENTRYPOINT和CMD指令的目的一样,都是指定Docker容器启动时执行的命令,可多次设置,但只有最后一个有效
格式: ENTRYPOINT ["executable", "param1", "param2"]
WORKDIR
WORKDIR指令可以在创建容器时在容器内部指定一个工作目录
例如: WORKDIR /data
 
Dockerfile示例;
FROM microsoft/dotnet:2.2-aspnetcore-runtime
LABEL version = "1.0"
RUN mkdir /data
COPY ./ /data
WORKDIR /data
EXPOSE 80
CMD [ "dotnet","Docker.dll" ]

Docker--Dockerfile引用及指令集的功能用法的更多相关文章

  1. [第十二篇]——Docker Dockerfile之Spring Cloud直播商城 b2b2c电子商务技术总结

    Docker Dockerfile 什么是 Dockerfile? Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明. 使用 Dockerfile 定制 ...

  2. Docker Compose 引用环境变量

    在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景.本文集中介绍 docker compose 引用环境变量的方式.说明:本文的演示环境为 ubu ...

  3. docker: Dockerfile命令介绍

    前一章介绍了Dockerfile创建镜像的方法,Dockerfile文件都是一些指令,因此要掌握Dockerfile就必须了解这些指令.这一章就介绍下Dockerfile的指令. From: 功能为指 ...

  4. docker Dockerfile指令ADD和COPY的区别,添加目录方法

    docker Dockerfile指令ADD和COPY的区别,添加目录方法 ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中.其格式是: ADD 源 ...

  5. SVN组成中trunk,branches and tags功能用法详解

    SVN组成中trunk,branches and tags功能用法详解  我相信初学开发在SVN作为版本管理时,都估计没可能考虑到如何灵活的运用SVN来管理开发代码的版本,下面我就摘录一篇文章来简单说 ...

  6. Docker Dockerfile简述

    原文地址:https://www.cnblogs.com/cuimiemie/p/6442677.html 作用 Dockerfile的内容是一坨可以执行的代码(或者说是指令)(docker的DSL) ...

  7. Docker - Dockerfile - 常见命令简介

    概述 感觉是个 比较重要的东西 有个疑问 我是先讲 docker build 还是 先讲 Dockerfile 穿插讲 docker build 最基本的东西 原理 -t -f docker file ...

  8. Docker Dockerfile 一

    1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这 ...

  9. Docker Dockerfile 定制镜像(转)

    转自: https://yeasy.gitbooks.io/docker_practice/ 及 https://blog.csdn.net/wo18237095579/article/details ...

随机推荐

  1. angularjs-$location

    $location服务分析浏览器地址栏中的URL(基于window.location),让我们可以在应用中较为方便地使用URL里面的内容.在地址栏中更改URL,会响应到$location服务中,而在$ ...

  2. ECharts 定制 label 样式

    起因 实现对 label 的样式定制,自定义字体颜色.大小等属性:效果如下图 实现   itemStyle: {   normal: {   color: '#f7ba0e',   label: { ...

  3. iptables.md

    iptables基本概念 工作流程 1.一个数据包进入网卡时,它首先进入PREROUTING链,内核根据数据包目的IP判断是否需要转发出去. 2.如果数据包就是进入本机的,它就会沿着图向下移动,到达I ...

  4. @objc vs @objc dynamic官方解释

    Some Objective-C APIs—like target-action—accept method or property names as parameters, then use tho ...

  5. css3动画效果小结

    css3的动画功能有以下三种: 1.transition(过度属性) 2.animation(动画属性) 3.transform(2D/3D转换属性) 下面逐一进行介绍我的理解: 1.transiti ...

  6. Docker存储方式选型建议

    转自:https://segmentfault.com/a/1190000007168476 第一部分 问题诊断 事情从一次实施项目说起,我们需要帮助客户将他们的应用容器化并在数人云平台上发布此应用. ...

  7. boost的初步了解

    本章介绍了 Boost C++ 库 Asio,它是异步输入输出的核心. 名字本身就说明了一切:Asio 意即异步输入/输出. 该库可以让 C++ 异步地处理数据,且平台独立. 异步数据处理就是指,任务 ...

  8. _tcschr和_tcsrchr使用

    好处:是可以不管是用unicode 编码还是其他 ,代码都不用改. C++标准库函数提供了字符和字符串的操作函数,并提供了其UNICODE版本,如: 1._tcschr代替strchr或者wcschr ...

  9. 安装framework 4.6.2的时报错 “无法建立到信任根颁发机构的证书链”

    解决方案: 1.下载证书:MicrosoftRootCertificateAuthority2011.cer 2.开始→运行→MMC 3.文件→添加删除管理单元 (Ctrl+M) 4.证书→计算机账户 ...

  10. React-Native使用极光进行消息推送

    推送作为APP几乎必备的功能,不论是什么产品都免不了需要消息推送功能,一般做RN开发的可能都是前端出身(比如我),关于android ios 都不是很懂