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

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. Swoole 中使用通道(Channel)实现协程间通讯(消息队列)

    通道 Coroutine\Channel 使用本地内存,不同的进程之间内存是隔离的. 只能在同一进程的不同协程内进行 push 和 pop 操作. Co::set(['hook_flags'=> ...

  2. 『无为则无心』Python函数 — 32、递归

    目录 1.什么叫递归函数 2.递归的应用场景 3.递归的特点 4.应用:3以内数字累加和 5.应用:阶乘 6.总结 1.什么叫递归函数 Python中,在函数内部,可以调用其他函数.如果一个函数在内部 ...

  3. 初识python 之 兔子生崽(小练习)

    题目:有一对兔子,从出生后第三个月起每个月都生一对小兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子不死,每个月的兔子总数为多少?思路分析: 月份 兔子数 规律1 2 2**12 2 2**13 ...

  4. 怎样查看Jenkins的版本

    where to check jenkins version To identify your current version of Jenkins, you can do one of two th ...

  5. vim 安装使用 pathogen

    目录 pathogen 是什么? 如何安装? pathogen 是什么? pathogen 一般作为 vim 新手的第一个插件,用来统一管理 vim 插件包. (官方解释)非常容易地管理你的 'run ...

  6. spring boot + redis --- 心得

    1.前言 习惯使用springMVC 配置 redis ,现在使用spring boot ,得好好总结怎么在spring boot 配置和使用 ,区别真的挺大的. 2.环境 spring boot  ...

  7. vuex获取数据

    cmd窗口vue add vuex后出现store文件夹,在里面的index.js里面设置state属性,可以在视图页面home.vue文件中获取. 方法1: //在项目当中引入router以后 就多 ...

  8. 利用python绘制分析路易斯安那州巴吞鲁日市的人口密度格局

    前言 数据来源于王法辉教授的GIS和数量方法,以后有空,我会利用python来实现里面的案例,这里向王法辉教授致敬. 绘制普查人口密度格局 使用属性查询提取区边界 import numpy as np ...

  9. 端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手四次挥手,滑动窗口(整理转发)

    网上查了一下端口状态的资料,我下面总结了一下,自己学习学习: TCP状态转移要点 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死 ...

  10. Mybatis 学习记录 续

    项目结构如下: 1.数据库建表 表名:user 结构: 内容: 2.pom.xml文件更新如下: 注:其中build部分尤其需要重视 <?xml version="1.0" ...