介绍
Dockerfile 是一个用来构建镜像的文本文件,其中包含了一条条构建镜像所需的指令和说明。使用docker build,用户可以创建一个连续执行多个指令命令的镜像。
使用
在一个目录下新建一个名为 Dockerfile 文件,编写所需的指令命令。
FROM alpineCMD echo "Hello World!"
使用 docker build 命令用Dockerfile文件构建一个镜像。
❗注意 结尾的 . 是必须的!!!
docker build -t nivinivin/alpine:v1 .
使用 docker run 命令用刚刚构建好的镜像创建并启动一个容器,就可以看见输出的“Hello World!”。
docker run nivinivin/alpine:v1
指令
FROM
初始化新的构建阶段,并为后续指令设置基础镜像。因此,有效的Dockerfile必须以FROM指令开头。尽可能使用官方镜像作为基础镜像,推荐使用 Alpine 镜像,因为它安全,轻量级,体积很小(目前小于5MB),同时仍然是一个完整的Linux发行版。
#语法FROM [--platform=<platform>] <image> [AS <name>]FROM [--platform=<platform>] <image>[:<tag>] [AS <name>]FROM [--platform=<platform>] <image>[@<digest>] [AS <name>]#实例FROM alpineFROM alpine:3.12
RUN
#语法RUN <command>RUN ["executable", "param1", "param2"]#实例#一行写不下时,使用‘\’进行换行RUN apt-get update && apt-get install -y \apt-utils \git \vim \&& rm -rf /var/lib/apt/lists/*RUN ["/bin/bash", "-c", "echo hello"]#等价于RUN /bin/bash -c 'echo hello'
CMD
#语法CMD command param1 param2CMD ["param1","param2"]CMD ["executable","param1","param2"]#实例CMD php -mCMD ["php", "-m"]
LABEL
#语法LABEL <key>=<value> <key>=<value> <key>=<value> ...#实例LABEL maintainer="Ving <ving@nivin.cn>"LABEL version="1.0"LABEL description="This text illustrates"
EXPOSE
#语法EXPOSE <port> [<port>/<protocol>...]#实例
ENV
#语法ENV <key>=<value> ...#实例
ADD
#语法ADD [--chown=<user>:<group>] <src>... <dest>ADD [--chown=<user>:<group>] ["<src>",... "<dest>"]#实例
COPY
#语法COPY [--chown=<user>:<group>] <src>... <dest>COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]#实例
ENTRYPOINT
#语法ENTRYPOINT ["executable", "param1", "param2"]ENTRYPOINT command param1 param2#实例
VOLUME
#语法VOLUME <path>VOLUME ["path"]#实例
USER
#语法USER <user>[:<group>]USER <UID>[:<GID>]#实例
WORKDIR
#语法WORKDIR <path>#实例
ARG
#语法ARG <name>[=<default value>]#实例
ONBUILD
#语法ONBUILD <INSTRUCTION>#实例
HEALTHCHECK
#语法HEALTHCHECK [OPTIONS] CMD commandHEALTHCHECK NONE#实例
SHELL
#语法SHELL ["executable", "parameters"]#实例
