---
description: Dockerfile书写格式
---

# Format

```
# 注释
INSTRUCTION arguments # 指令和参数
```

该指令不区分大小写。但是，惯例是将它们大写以便更容易地将它们与参数区分开。

**Docker**依次在**Dockerfile**中运行指令。 **Dockerfile**必须以**FROM指令**开头。它可能在解析器指令，注释和具有全局作用域的**ARG**之后。 **FROM指令**指定了将要构建的父镜像。在**FROM**之前只能有一个或多个**ARG指令**，这些指令声明了在**Dockerfile FROM**行中使用的参数。

**Docker**会将&#x4EE5;**＃**&#x5F00;头的行视为注释，除非该行是有效的解析器指令。一行中其他任何地方&#x7684;**＃**&#x6807;记均被视为参数。这允许如下语句：

```
# Comment
RUN echo 'we are running some # of cool things'
```

在执行**Dockerfile指令**之前会删除注释行，这意味着以下示例中的注释不会由执行**echo命令**的**shell处理**，并且以下两个示例是等效的:

```
RUN echo hello \
# comment 在构建镜像时会被删除
world
```

```
RUN echo hello \
world
```

**注释中不支持行继续符。**

```
为了向后兼容，将忽略在注释（＃）和指令（例如RUN）之前的前导空格。在这些情况下，不保留前导空格，因此以下示例是等效的：

       # this is a comment-line
    RUN echo hello
RUN echo world
# this is a comment-line
RUN echo hello
RUN echo world

但是请注意，指令参数中的空格（例如RUN之后的命令）被保留，因此以下示例使用指定的前导空格打印“ hello world”：
RUN echo "\
     hello\
     world"
```
