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. ant jmeter jenkins 实现自动化测试

    编者按: 本文核心的关键是ant去调用build.xml 执行自动化测试任务. bulid.xml 文件的内容按照注释修改为你自己服务器相关信息. 配置完成后一定要手动在服务器上执行一次,确保你配置的 ...

  2. 20155314 2016-2017-2 《Java程序设计》实验二 Java面向对象程序设计

    20155314 2016-2017-2 <Java程序设计>实验二 Java面向对象程序设计 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UM ...

  3. c++ 浅拷贝和深拷贝 指针和引用的区别 malloc(free)和new(delete)的区别 重载重写重定义

    4.malloc(free)和new(delete)的区别 malloc()函数: 1.1 malloc的全称是memory allocation,中文叫动态内存分配. 原型:extern void ...

  4. django 模板关闭自动转义

    Django的模板中会对HTML标签和JS等语法标签进行自动转义,原因显而易见,这样是为了安全.但是有的时候我们可能不希望这些HTML元素被转义,比如我们做一个内容管理系统,后台添加的文章中是经过修饰 ...

  5. C#版谷歌地图下载器设计与实现

    关于如何将地球经纬度坐标系统转换成程序中常用到的平面2D坐标系统,网上的文章很多,参考http://www.cnblogs.com/beniao/archive/2010/04/18/1714544. ...

  6. P1441 砝码称重

    题目描述 现有n个砝码,重量分别为a1,a2,a3,……,an,在去掉m个砝码后,问最多能称量出多少不同的重量(不包括0). 输入输出格式 输入格式: 输入文件weight.in的第1行为有两个整数n ...

  7. 对象关系映射(ORM)

    1.什么是 对象-关系映射 对象-关系映射(Object Relational Mapping,简称ORM,对象关系映射)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,OR ...

  8. FullCalendar Timeline View 使用

    FullCalendar  Timeline View(v4) The Scheduler add-on provides a new view called “timeline view” with ...

  9. JavaScript中的数据属性和访问器属性

    在学习JavaScript原型(prototype)和原型链(prototype chain)知识的时候,发现数据属性和访问器属性的重要性,通过不断的查找相关知识,浅显理解如下,若有差错,希望不吝赐教 ...

  10. freemarker时间转换

    Freemarker日期函数处理[转] (2012-08-01 14:32:13)   string(当和一个日期值一起使用) 这个内置标签用指定的格式把日期转换成字符串,(把默认的格式用FreeMa ...