把应用部署在容器中,改变了用文本文件保存配置信息的方式。而通过传环境变量配置。

Dockerfile是一个文本文件,包括容器的指令。按顺序从上到下执行,第一行非注释指令必须是FROM指定基础镜像。

Dockerfile的工作逻辑:

(1)在一个专用目录放入Dockerfile文件,首字母大写。
(2)Dockerfile引用的文件都在工作目录下,.dockeringore文件中标明的文件在打包时会被排除。
(3)docker build命令把Dockerfile引用的工作目录传入Docker daemon,然后开始按照Dockerfile中的内容构造镜像。
(4)Dockerfile中的每一条指令都会生出一个新的镜像层,最终的镜像就是基础镜像上叠加一层层的镜像层组建的。

指令:

(1)FROM
Dockerfile第一个非注释行,用于指定基准镜像。
格式:
FROM <reposotiry>[:<tag>]
FROM <reposotiry>@<digest>
可以用标签或Hash码标识镜像

(2) LABEL
用键值格式表示各种元数据
格式:
LABEL <key> = <value> <key> = <value> ...
例:LABEL autor="ss" time="20190312"

(3) COPY
用于从主机复制文件至创建的新映像文件
格式:
COPY <src> <dest>
<src>:要复制的源文件或目录,支持通配符。
<dest>:目标路径,建议使用绝对路径。
说明:
a.<src>为目录时,则会递归复制,但<src>目录本身不会被复制;
b.指定多个<src>,或在<src>中使用通配符,则<dest>必须是目录,以/结尾;
c.<dest>事先不存在,将被自动创建。

(4) ADD
ADD指令类似于COPY指令。ADD支持使用TAR文件和URL路径。
格式:
ADD <src> <dest>
说明:
a.同COPY指令
b.如果<src>是一个本地系统上的tar文件,它将被展开为一个目录,类似于tar -x。而通过URL获取到的tar文件不会展开。
c.如果<src>是多个或使用了通配符,则<dest>必须是/结尾的目录路径,否则<src>的内容将被直接写到<dest>

(5) WORKDIR
用于为Dockerfile中各种指令设定工作目录
例如:
WORKDIR /usr/local
ADD tmp.tar.gz ./src/

(6) VOLUME
用于在image中创建一个挂载点目录,以挂载Docker host上的卷或其他容器上的卷。
格式:
VOLUME <mountpoint>

(7) EXPOSE
用于为容器打开指定要监听的端口
例如:EXPOSE 11211/udp 11211/tcp
配合docker run -P命令使用

(8) ENV
用于为镜像定义所需的环境变量,并可被Dockerfile文件中位于其后的其他指令所调用。
调用格式:$var 或 ${var}
定义格式:
ENV <key> <value>
ENV <key>=<value> ...

(9) RUN
针对于FROM的基础镜像,在docker build阶段执行。
格式:
RUN <command>
RUN ["<executable>", "<param1>", "<param2>"]
注意:
第一种方式,命令通过/bin/sh -c运行;
第二种格式,命令直接运行,不调用shell,该格式被docker当成json数组解析,所以必须用双引号。

(10) CMD
CMD在docker run启动容器时运行。
多个CMD,只执行最后一个。
格式:
CMD <command>
CMD ["<executable>", "<param1>", "<param2>"]
CMD ["<param1>", "<param2>"]

(11) ENTRYPOINT
与CMD类似,但在docker run时参数不会覆盖ENTRYPOINT,而是作为ENTRYPOINT的参数。
CMD与ENTRYPOINT同时存在,CMD作为ENTRYPOINT的参数。

(12) USER
USER <UID>|<UserName>
<UID>必须为/etc/passwd中有效的UID

(13) HEALTHCHECK
健康检查

(14) SHELL
指定shell
默认
linux:["/bin/sh", "-c"]
win:["cmd", "/s", "/c"]

(15) STOPSIGNAL
更改stop的信号,默认是15

(16) ARG
在docker build时传参数。

(17) ONBUILD
用于在Dockerfile中定义一个触发器,在别人用该镜像作为基础镜像是使用。

docker基础——5.Dockerfile的更多相关文章

  1. [转]Docker基础-使用Dockerfile创建镜像

    本文转自:https://www.cnblogs.com/jie-fang/p/7927643.html 1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # T ...

  2. Docker基础-使用Dockerfile创建镜像

    1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - ED ...

  3. docker基础:dockerfile的介绍

    Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的基本结构及其支持的众多指令,并具体讲解通过执行指令来编写 ...

  4. (转)Docker 基础 : Dockerfile

    全文来自 Docker 基础 : Dockerfile Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的 ...

  5. Docker - Docker基础命令及使用

    Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...

  6. Docker基础入门及示例

    Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...

  7. Docker(二):Dockerfile 使用介绍

    上一篇文章Docker(一):Docker入门教程介绍了 Docker 基本概念,其中镜像.容器和 Dockerfile .我们使用 Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dock ...

  8. Docker 基础 : 镜像

    目录 获取镜像 查看镜像信息 搜索镜像 删除镜像 创建镜像 导出和导入镜像 上传镜像 总结 镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的 ...

  9. Docker系列03—Docker 基础入门

    本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...

随机推荐

  1. Unity——ShaderLab实现玻璃和镜子效果

    在这一篇中会实现会介绍折射和反射,以及菲尼尔反射:并且实现镜子和玻璃效果: 这里和之前不同的地方在于取样的是一张CubeMap: demo里的cubemap使用的一样,相机所在位置拍出来的周围环境图: ...

  2. CSS实战 模拟 新闻列表

    总结:所使用的知识点:1.padding应用以及box-sizing: border-box自动内减撑大的盒子 2.ul>li 的使用,去除黑圆圈 3.a标签的使用,去除默认样式<下划线& ...

  3. C# 设置或验证 PDF中的文本域格式

    概述 PDF中的文本域可以通过设置不同格式,用于显示数字.货币.日期.时间.邮政编码.电话号码和社保号等等.Adobe Acrobat提供了许多固定的JavaScripts用来设置和验证文本域的格式, ...

  4. centos7 安装zabbix3.0 安装zabbix4.0 yum安装zabbix 国内源安装zabbix 阿里云服务器安装zabbix

    首先,此篇文章是有原因的. 刚开始也和大家一样来学习安装zabbix 奈何网上的教程和现实出现不一样的情况 在安装zabbix过程中,因为zabbix下载源是在国外,下载途中会出现终止下载的情况 tr ...

  5. antd-vue中的form表单label标签for导致点击文字触发输入框解决方案

    <a-form-item :label="label+'图片'" :label-col="{ span: 2 }" :wrapper-col=" ...

  6. Linux上天之路(二)之Linux安装

    1. vmware workstation使用 VMware是全球领先的虚拟化公司,为客户提供虚拟化解决方案,个人虚拟化产品workstation,可以让用户通过虚拟化的方式在一台物理电脑中安装多个操 ...

  7. Elasticsearch打造全文搜索引擎(一)

     带着问题上路--ES是如何产生的? (1)思考:大规模数据如何检索? 如:当系统数据量上了10亿.100亿条的时候,我们在做系统架构的时候通常会从以下角度去考虑问题: 1)用什么数据库好?(mysq ...

  8. 华为HMS Core全新推出会员转化&留存预测模型

    现在,付费学知识,付费听歌,付费看电视剧,付费享受线上购物优惠--等等场景已经成为大部分年轻人的日常. 而对于企业商家来说,付费会员作为企业差异化用户运营的手段,不仅有利于提升用户的品牌忠诚度,在当下 ...

  9. Sentine熔断降级进阶

    sentinel和springCloud整合 减少开发的复杂度,对大部分的主流框架,例如:Web Servlet.Dubbo.Spring Cloud.gRPC.Spring WebFlux.Reac ...

  10. session反序列化

    先来了解一下关于session的一些基础知识 什么是session?在计算机中,尤其是在网络应用中,称为"会话控制".Session 对象存储特定用户会话所需的属性及配置信息.这样 ...