docker基础——5.Dockerfile
把应用部署在容器中,改变了用文本文件保存配置信息的方式。而通过传环境变量配置。
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的更多相关文章
- [转]Docker基础-使用Dockerfile创建镜像
本文转自:https://www.cnblogs.com/jie-fang/p/7927643.html 1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # T ...
- Docker基础-使用Dockerfile创建镜像
1.基本结构 Dockerfile由一行行命令语句组成,并支持以#开头的注释行.例如: # This dockerfile uses the ubuntu image # VERSION 2 - ED ...
- docker基础:dockerfile的介绍
Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的基本结构及其支持的众多指令,并具体讲解通过执行指令来编写 ...
- (转)Docker 基础 : Dockerfile
全文来自 Docker 基础 : Dockerfile Dockerfile 是一个文本格式的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像.我们会先介绍 Dockerfile 的 ...
- Docker - Docker基础命令及使用
Docker Docker - 官网 Docker - Hub GitHub - Docker Docker中文社区 Docker基础命令 Docker 查看帮助信息:docker --help 查看 ...
- Docker基础入门及示例
Docker近几年的发展可谓一日千里,特别从是2013年随着一个基于LXC的高级容器引擎开源,到现在,其在linux和windows上都有了很好的支持,并且已经有很多公司将docker用于实际的生产环 ...
- Docker(二):Dockerfile 使用介绍
上一篇文章Docker(一):Docker入门教程介绍了 Docker 基本概念,其中镜像.容器和 Dockerfile .我们使用 Dockerfile 定义镜像,依赖镜像来运行容器,因此 Dock ...
- Docker 基础 : 镜像
目录 获取镜像 查看镜像信息 搜索镜像 删除镜像 创建镜像 导出和导入镜像 上传镜像 总结 镜像是 Docker 的三大核心概念之一.Docker 运行容器前需要本地存在对应的镜像,如果本地没有对应的 ...
- Docker系列03—Docker 基础入门
本文收录在容器技术学习系列文章总目录 1.概念介绍 1.1 容器 1.1.1 介绍 容纳其它物品的工具,可以部分或完全封闭,被用于容纳.储存.运输物品.物体可以被放置在容器中,而容器则可以保护内容物. ...
随机推荐
- Swoole 中使用通道(Channel)实现协程间通讯(消息队列)
通道 Coroutine\Channel 使用本地内存,不同的进程之间内存是隔离的. 只能在同一进程的不同协程内进行 push 和 pop 操作. Co::set(['hook_flags'=> ...
- 『无为则无心』Python函数 — 32、递归
目录 1.什么叫递归函数 2.递归的应用场景 3.递归的特点 4.应用:3以内数字累加和 5.应用:阶乘 6.总结 1.什么叫递归函数 Python中,在函数内部,可以调用其他函数.如果一个函数在内部 ...
- 初识python 之 兔子生崽(小练习)
题目:有一对兔子,从出生后第三个月起每个月都生一对小兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子不死,每个月的兔子总数为多少?思路分析: 月份 兔子数 规律1 2 2**12 2 2**13 ...
- 怎样查看Jenkins的版本
where to check jenkins version To identify your current version of Jenkins, you can do one of two th ...
- vim 安装使用 pathogen
目录 pathogen 是什么? 如何安装? pathogen 是什么? pathogen 一般作为 vim 新手的第一个插件,用来统一管理 vim 插件包. (官方解释)非常容易地管理你的 'run ...
- spring boot + redis --- 心得
1.前言 习惯使用springMVC 配置 redis ,现在使用spring boot ,得好好总结怎么在spring boot 配置和使用 ,区别真的挺大的. 2.环境 spring boot ...
- vuex获取数据
cmd窗口vue add vuex后出现store文件夹,在里面的index.js里面设置state属性,可以在视图页面home.vue文件中获取. 方法1: //在项目当中引入router以后 就多 ...
- 利用python绘制分析路易斯安那州巴吞鲁日市的人口密度格局
前言 数据来源于王法辉教授的GIS和数量方法,以后有空,我会利用python来实现里面的案例,这里向王法辉教授致敬. 绘制普查人口密度格局 使用属性查询提取区边界 import numpy as np ...
- 端口状态 LISTENING、ESTABLISHED、TIME_WAIT及CLOSE_WAIT详解,以及三次握手四次挥手,滑动窗口(整理转发)
网上查了一下端口状态的资料,我下面总结了一下,自己学习学习: TCP状态转移要点 TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断开连接,如果缺少了其中某个步骤,将会使连接处于假死 ...
- Mybatis 学习记录 续
项目结构如下: 1.数据库建表 表名:user 结构: 内容: 2.pom.xml文件更新如下: 注:其中build部分尤其需要重视 <?xml version="1.0" ...