编写Dockerfile的方法
博客专区 > tommwq 的博客 > 博客详情
编写Dockerfile的方法
tommwq 发表于11个月前
编写Dockerfile的方法
  • 发表于 11个月前
  • 阅读 23
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: 本文介绍了编写Dockerfile的方法,以及Dockerfile常用命令用法。

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 参考

标签: Docker
共有 人打赏支持
粉丝 2
博文 18
码字总数 12894
×
tommwq
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: