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

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. TypeScript中文教程基础部分上----翻译自TS官方

    为什么使用TS? js中每一个值在不同的操作运行中表现出一系列不同的行为,比如说下面这个例子: message.toLowerCase();message(); 逐行看下,第一行调用了message的 ...

  2. Linux_grep命令

    搜索内容 命令格式如下 grep 参数 "搜索的内容" 搜索路径 注:搜索路径可缺省,缺省时,默认搜索当前目录以及其子目录下所有文件 显示文件名+内容: grep -r " ...

  3. Python3.7 发送邮件 报‘[WinError 10061] 由于目标计算机积极拒绝,无法连接’错误的解决方法

    背景: 最近在练习Python 的邮件发送功能 照着教程写了一个简单的demo 结果运行时报如下错误:[WinError 10061] 由于目标计算机积极拒绝,无法连接. 如图: 解决路径如下: St ...

  4. spring cloud --- 使用 actuator 热更新【刷新】单机配置文件

    1.前言 分布式微服务想要热更新配置文件,还需要 消息中间件 配合使用 ,一般使用 rabbitMQ 或 Kafka ,这里不解释 . 这篇随笔 只讲解 底层的 单机热更新配置文件 2.环境 spri ...

  5. LINUX学习-Mysql集群-一主多从

    新建一台服务器 192.168.88.40 yum -y install mysql mysql-server 编辑etc下的配置文件 vim /etc/my.cnf 输入 bin-log=mysql ...

  6. 一文搞懂Flink Window机制

    Windows是处理无线数据流的核心,它将流分割成有限大小的桶(buckets),并在其上执行各种计算. 窗口化的Flink程序的结构通常如下,有分组流(keyed streams)和无分组流(non ...

  7. 解读与部署(三):基于 Kubernetes 的微服务部署即代码

    在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...

  8. docker 环境安装 jenkins

    下载镜像运行 jenkins 默认服务器已经安装好了 docker 环境: 拉取 jenkins 镜像 docker pull jenkins/jenkins:lts 镜像的详细信息可以查看:http ...

  9. 用 vite 构建项目,同时支持微前端

    得益于 esbuild 的超高性能,vite 在诞生之初就备受关注,且一直保持着活跃的开发迭代.截至目前,vite 已经迭代到了 2.7.10 版本,各方面也基本具备了在生产使用的条件.这段时间,我在 ...

  10. webstorm 配置git代码项目管理工具

    1.下载最新的webStrom11安装包安装 https://confluence.jetbrains.com/display/WI/Previous+WebStorm+Releases/ 2.破解w ...