文档章节

编写Dockerfile的方法

t
 tommwq
发布于 2017/02/15 15:56
字数 821
阅读 35
收藏 0

1 语法格式

Dockerfile的语法格式如下

# 注释
命令 参数

其中,<命令>是不区分大小写的。但为了同后面的参数区分开来,通常写成大写字母。

2 注释

在Dockerfile中,以#开头的行是注释。注释不会影响docker build的执行过程。

2.1 注释中的指示

注释中如果出现格式为

# directive=value

的内容,会被当作指示进行处理。

2.1.1 escape指示

escape指示的用法为

# escape=\

# escape=`

3 环境变量

部分指令支持在参数中使用环境变量。环境变量的语法格式如下:

$variable_name
${variable_name}

环境变量支持一些变形用法,如

${variable:-word} # 如果variable已设置,表达式以variable为结果,否则表达式以word为结果。

${variable:+word} # 如果变量variable已设置,表达式以word为结果。

支持环境变量的命令有

ADD
COPY
ENV
EXPOSE
LABEL
USER
WORKDIR
VOLUME
STOPSIGNAL

4 dockerignore文件

在使用docker build构建镜像时,docker会将工作目录(包括其中的文件和子目录)作为context发送给构建进程。对于构建过程中不会被用到的文件,可以把这些文件的名字写在.dockerfile文件中,以加速构建过程。 dockerignore文件中每个文件名占一行,并支持通配符,如

*~
*/*/temp/*
temp?

5 命令

5.1 首个命令FROM

Dockerfile的第一个命令必须是FROM。FROM命令用于定义基准镜像。后续一切命令都是在基准镜像上进行操作。 FROM命令的用法为

FROM <image>[:<tag>]

FROM <image>@<digest>

5.2 MAINTAINER命令

MAINTAINER指令指明了Dockerfile的维护者。MAINTAINER命令的用法为

MAINTAINER <name>

5.3 RUN命令

RUN命令用于在基础镜像中执行程序。RUN命令的语法为

RUN <command>

RUN ["executable", "param1", "param2"]

5.4 CMD命令

CMD命令用于为可执行容器指定默认行为。CMD指令在一个Dockerfile中最多出现一次,其语法为

CMD ["executable", "param1", "param2"]

CMD ["param1", "param2"] # 以param1、param2为参数执行ENTRYPOINT

CMD command param1 param2

5.5 LABEL命令

LABEL命令为镜像增加一组键值对作为元信息。

LABEL <key>=<value> <key2>=<value2>

5.6 EXPOSE命令

EXPOSE命令告诉docker容器需要监听指定的端口。

EXPOSE <port> [<port>...]

5.7 ENV命令

ENV命令用于设置环境变量。

ENV <key> <value>
ENV <key>=<value>

5.8 ADD命令

复制文件、目录或URL。

ADD <src>... <dest>

5.9 COPY命令

复制文件、目录或URL。

COPY <src>... <dest>

5.10 ENTRYPOINT命令

ENTRYPOINT定义了容器运行的程序。

ENTRYPOINT command param1 param2

5.11 VOLUME命令

VOLUME命令将外部存储挂载为容器内的目录。

VOLUME ["/data"]

5.12 USER命令

设置执行RUN/CMD/ENTRYPOINT命令时使用的用户。

USER <username_or_userid>

5.13 WORKDIR命令

设置执行RUN/CMD/ENTRYPOINT命令时使用目录。

WORKDIR <path/to/work/directory>

5.14 ARG命令

设置构建期参数。

ARG <name>[=<default value>]

6 Dockerfile示例

6.1 使用Alpine构建Go开发环境

FROM alpine

MAINTAINER Wang Qian

VOLUME ["/home/git", "/data/repo"]

RUN apk update
RUN apk add go
RUN apk add make
RUN apk jenkins
RUN apk git
RUN apk openssh

RUN addgroup git
RUN adduser -h /home/git -s /bin/false -S -G git git

CMD /bin/sh

7 参考

© 著作权归作者所有

共有 人打赏支持
t
粉丝 2
博文 20
码字总数 17899
作品 0
广州
Docker数据管理与网络通信之镜像的创建方法

Docker镜像的创建方法 Docker镜像除了是Docker的核心技术之外,也是应用发布的标准格式。 一个完整的Docker镜像可以支撑一个Docker容器的运行,在Doker的整个使用过程中,进入一个已经定型的...

徐星月月月
08/14
0
0
DockerFile实战(二):DockerFile编写要求与基本风格

之前分享了一个Nginx的Dockerfile实战文章,但这是基于原有镜像的基础上去添加修改的,那么本文 来详细讲解一下,如何从ubuntu镜像生成一个Nginx镜像 Step1: #最开始,还是需要先搜索一个可...

Leon_zhang50773
2016/07/08
0
0
【自定义】通过Dockerfile创建httpd镜像

创建镜像三种方法 Docker镜像创建方法有三种,分别为基于已有镜像创建、基于本地模板创建以及基于Dockerfile创建。 通过Dockerfile创建镜像 这里主要记录下基于Dockerfile创建方法,Dockerf...

MaAiQiang
08/16
0
0
docker 自动构建,基于Dockerfile文件

原文地址:http://kekefund.com/2017/03/06/docker-dockerfile-generated/ 1,Dockerfile的编写 在centos中创建一个目录:/mydata/data/dockertest/,新建Dockerfile文件 vim Dockerfile 编写......

cbbing
2017/06/08
0
0
九步构建自己的hello world Docker镜像

构建 Docker 镜像 Docker镜像构建是通过 Dockerfile来构建的,里面运行的程序是可以自定的,从编写程序到安装Docker镜像,可以一气呵成。接下来我们就通过九步实现一个自定义的镜像的制作、构...

上官瑾文
04/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据框架对比:Hadoop、Storm、Samza、Spark和Flink

简介 大数据是收集、整理、处理大容量数据集,并从中获得见解所需的非传统战略和技术的总称。虽然处理数据所需的计算能力或存储容量早已超过一台计算机的上限,但这种计算类型的普遍性、规模...

hblt-j
35分钟前
2
0
正则介绍及grep/egrep用法

10月16日任务 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 扩展 把一个目录下,过滤所有*.php文档中含有eval的行 grep -r --include="*.php" 'eval' /data 9.1 正则介绍_grep上 什么是正则 ...

zgxlinux
50分钟前
2
0
想用Unity3D引擎软件赚点钱的看过来

前言: 你可以不拥有很多钱 但你一定要有赚钱的能力 目前手上有项目, 需要熟练Unity3D引擎软件的伙伴 有意向的给我发私信

猿神出窍
52分钟前
2
0
Spring Boot全局异常处理

Spring Boot默认的异常处理机制 默认情况下,Spring Boot为两种情况提供了不同的响应方式。 一种是浏览器客户端请求一个不存在的页面或服务端处理发生异常时,一般情况下浏览器默认发送的请求...

狼王黄师傅
今天
8
0
Thinkphp5 优雅配置两个数据库

工作需要需要配置两个数据库,框架5.0的,步骤如下: 1、在database.php同级创建一个database2.php文件 在里面配置第二个数据库信息, 2、在config中配置这个数据库信息: 3、创建第二个表的...

wqzbxh
今天
5
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部