Dockerfile 就是一个文本文件,其中包含了一条条指令,每条指令构建一层。每一条指令的内容,就是描述当前这一层如何构建。
-
FROM
指定基础镜像。
基础镜像就是以一个镜像为基础,在其上面定制,构建我们自己的镜像。比如centos
,tomcat
,mysql
等等。例如:
FROM centos
-
RUN
执行命令shell
格式:RUN <命令>
例如:RUN yum install vim
exec
格式:RUN ["可执行文件", "参数1", "参数二"]
例如:RUN [xxx.sh, arg1]
-
COPY
复制文件
shell
格式:COPY <源路径> <目标路径>
例如:COPY hom* /mydir/
exec
格式:COPY ["源路径", "目标路径"]
例如:COPY ["home.txt", "/mydir/"]
-
ADD
更高级的复制文件
用法与COPY
一样,如果复制的文件是压缩包,会默认解压到目标路径。
源路径可以是 URL,如果是,会自动下载并设置文件权限为600
。用来将构建环境下的文件和目录复制到镜像中。比如,在安装一个应用程序时。
ADD 指令需要源文件位置和目的文件位置两个参数 -
CMD
容器启动命令
也有shell
与exec
两种格式。 -
ENTRYPOINT
入口点
也有shell
与exec
两种格式。 -
ENV
设置环境变量
格式有两种:
ENV <key><value>
ENV <key1>=<value1> <key2>=<value2>
用来在镜像构建过程中设置环境变量 -
ARG
构建参数
ARG <参数名>[=<默认值>]
与ENV
效果一样,区别是ARG
构建的环境变量在容器运行时是不会存在这些环境变量的。 -
VOLUME
定义匿名卷
也有shell
与exec
两种格式。
VOLUME <路径>
VOLUME ["<路径1>", "<路径2>"]
用来向基于镜像创建的容器添加卷。一个卷是可以存在于一个或者多个容 器内的特定的目录,这个目录可以绕过联合文件系统,并提供如下共享数据或者对数据进行 持久化的功能。 -
EXPOSE
声明端口
EXPOSE <端口1> [<端口2>...]
与-p
参数不同,不会进行映射,只是声明打算使用什么端口 -
WORKDIR
制动工作目录
WORKDIR <工作目录路径>
用来在从镜像创建一个新容器时,在容器内部设置一个工作目录,ENTRYPOINT
和/或CMD
指定的程序会在这个目录下执行。 -
USER
指定当前用户
USER <用户名>
指定该镜像会以什么样的用户去运行
网友评论