文档章节

编写Dockerfile的方法

t
 tommwq
发布于 2017/02/15 15:56
字数 821
阅读 38
收藏 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
粉丝 3
博文 21
码字总数 18094
作品 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
九步构建自己的hello world Docker镜像

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

上官瑾文
04/17
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

没有更多内容

加载失败,请刷新页面

加载更多

聊聊flink的FsStateBackend

序 本文主要研究一下flink的FsStateBackend StateBackend flink-runtime_2.11-1.7.0-sources.jar!/org/apache/flink/runtime/state/StateBackend.java @PublicEvolvingpublic interface Sta......

go4it
21分钟前
0
0
webpack配置proxyTable时pathRewrite无效的解决方法

webpack配置接口地址代理 在项目开发中,接口联调的时候一般都是同域名下,且不存在跨域的情况下进行接口联调,但是当我们在本地启动服务器后,比如本地开发服务下是 http://localhost:8080 ...

前端小攻略
21分钟前
0
0
安装jenkins

1.下载 wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.155/jenkins.war 2.后续操作和 dubbo 安装类似: (1)复制一份空白的tomcat,重命名为:jenkins-tomcat (2)war包放入t...

狼王黄师傅
29分钟前
1
0
zookeeper配置与使用

一.登录官网下载 不要带后缀的,那是公侧版本,下稳定版,比如3.4.9 二.安装与使用 解压后bin里是启动程序 配置文件:在conf下 复制zoo_sample.cfg改名为为zoo.cfg,打开zoo修改文件...

小兵胖胖
54分钟前
3
0
spring源码阅读笔记(一)

ClassPathXmlApplicationContext 与 FileSystemXmlApplicationContext 用了这么久的框架,是时候搞一下源码了,一般最初接触spring 从以下步骤开始 创建一个bean类 并创建 ooxx.xml之类的spr...

NotFound403
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部