介绍

Dockerfile 是一个用来构建镜像的文本文件,其中包含了一条条构建镜像所需的指令和说明。使用docker build,用户可以创建一个连续执行多个指令命令的镜像。

使用

在一个目录下新建一个名为 Dockerfile 文件,编写所需的指令命令。

  1. FROM alpine
  2. CMD echo "Hello World!"

使用 docker build 命令用Dockerfile文件构建一个镜像。

❗注意 结尾的 . 是必须的!!!

  1. docker build -t nivinivin/alpine:v1 .

使用 docker run 命令用刚刚构建好的镜像创建并启动一个容器,就可以看见输出的“Hello World!”。

  1. docker run nivinivin/alpine:v1

指令

FROM

初始化新的构建阶段,并为后续指令设置基础镜像。因此,有效的Dockerfile必须以FROM指令开头。尽可能使用官方镜像作为基础镜像,推荐使用 Alpine 镜像,因为它安全,轻量级,体积很小(目前小于5MB),同时仍然是一个完整的Linux发行版。

  1. #语法
  2. FROM [--platform=<platform>] <image> [AS <name>]
  3. FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]
  4. FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]
  5. #实例
  6. FROM alpine
  7. FROM alpine:3.12

RUN

  1. #语法
  2. RUN <command>
  3. RUN ["executable", "param1", "param2"]
  4. #实例
  5. #一行写不下时,使用‘\’进行换行
  6. RUN apt-get update && apt-get install -y \
  7. apt-utils \
  8. git \
  9. vim \
  10. && rm -rf /var/lib/apt/lists/*
  11. RUN ["/bin/bash", "-c", "echo hello"]
  12. #等价于
  13. RUN /bin/bash -c 'echo hello'

CMD

  1. #语法
  2. CMD command param1 param2
  3. CMD ["param1","param2"]
  4. CMD ["executable","param1","param2"]
  5. #实例
  6. CMD php -m
  7. CMD ["php", "-m"]

LABEL

  1. #语法
  2. LABEL <key>=<value> <key>=<value> <key>=<value> ...
  3. #实例
  4. LABEL maintainer="Ving <ving@nivin.cn>"
  5. LABEL version="1.0"
  6. LABEL description="This text illustrates"

EXPOSE

  1. #语法
  2. EXPOSE <port> [<port>/<protocol>...]
  3. #实例

ENV

  1. #语法
  2. ENV <key>=<value> ...
  3. #实例

ADD

  1. #语法
  2. ADD [--chown=<user>:<group>] <src>... <dest>
  3. ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]
  4. #实例

COPY

  1. #语法
  2. COPY [--chown=<user>:<group>] <src>... <dest>
  3. COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]
  4. #实例

ENTRYPOINT

  1. #语法
  2. ENTRYPOINT ["executable", "param1", "param2"]
  3. ENTRYPOINT command param1 param2
  4. #实例

VOLUME

  1. #语法
  2. VOLUME <path>
  3. VOLUME ["path"]
  4. #实例

USER

  1. #语法
  2. USER <user>[:<group>]
  3. USER <UID>[:<GID>]
  4. #实例

WORKDIR

  1. #语法
  2. WORKDIR <path>
  3. #实例

ARG

  1. #语法
  2. ARG <name>[=<default value>]
  3. #实例

ONBUILD

  1. #语法
  2. ONBUILD <INSTRUCTION>
  3. #实例

HEALTHCHECK

  1. #语法
  2. HEALTHCHECK [OPTIONS] CMD command
  3. HEALTHCHECK NONE
  4. #实例

SHELL

  1. #语法
  2. SHELL ["executable", "parameters"]
  3. #实例