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. springmvc入门之HelloWorld篇

    springmvc是一个基于spring的mvc框架,各种优点啥的用过就知道了.下面开始讲HelloWorldController的实现. 1.开发环境搭建<导jar包+配置文件> 1.1 ...

  2. HDU 5550 - Game Rooms(DP + 前缀和预处理)

    链接: http://acm.hdu.edu.cn/showproblem.php?pid=5550 题意: 一个大楼有n(2≤n≤4000)层,每层可以建一个乒乓球房或者一个游泳房,且每种房间在大楼 ...

  3. python 二维数组键盘输入

    m = int(input()) grid = [[] for i in range(m)] for i in range(m): line = input().split(' ') for j in ...

  4. Hive学习之路 (八)Hive中文乱码

    Hive注释中文乱码 创建表的时候,comment说明字段包含中文,表成功创建成功之后,中文说明显示乱码 create external table movie( userID int comment ...

  5. etherlime-2-Etherlime Library API-deployer

    Etherlime Library API 库API Deployer部署者 Deployer functionality The main functionality the deployer ex ...

  6. Python自动化之session反解案例

    session反解案例 from django.contrib.sessions.models import Session sess = Session.objects.get(pk='a92d67 ...

  7. MySQL(一)索引的创建和删除

    索引是存储引擎用于快速找到记录的一种数据结构,这是索引的基本功能. 索引对于良好的性能非常关键.尤其是当表中的数据量越来越大时,索引对性能的影响愈发重要.接下来将讲述如何创建.查看和删除索引. 索引分 ...

  8. vue组件懒加载(Load On Demand)

    在Web应用程序中,系统的瓶颈常在于系统的响应速度.如果系统响应速度过慢,用户就会出现埋怨情绪,系统的价值也因此会大打折扣.因此,提高系统响应速度,是非常重要的. 懒加载(Load On Demand ...

  9. sencha 2.3中自己定义PullRefreshFn给PullRefresh加入下拉刷新事件

    Sencha removed the refreshFn from the pullrefresh plugin in ST 2.2. Here is an user extension with g ...

  10. Rendering Engine 主流的浏览器内核(排版引擎、渲染引擎、解释引擎)有哪几种,分别的特点

    一.A web browser engine A rendering engine is software that draws text and images on the screen. The ...