Dockerfile体系结构保留字指令
1. FROM
基础镜像,当前的新镜像是基于哪个镜像的
2. MAINTAINER
镜像维护者的姓名和邮箱地址
3. RUN
容器构建时需要运行的额外的命令
4. EXPOSE
当前容器对我暴露出的端口
5. WORKDIR
指定在创建容器后,终端默认登录的进来的工作目录,一个落脚点,如果不配置默认为根目录 进入之后目录为/
6. ENV
用来在构建镜像过程中设置环境变量
ENV MY_PATH /usr/mytest
这个环境变量可以在后续的RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样;也可以在其它指令中直接使用这些环境变量,
比如: WORKDIR $MY_PATH
7. ADD
将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
8. COPY
类似ADD,拷贝文件和目录到镜像中。
将从构建上下文目录中<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
- COPY src dest
- COPY [“src”, “dest”]
9. VOLUME
容器数据卷,用于数据保存和持久化工作
10. CMD
指定一个容器启动时要运行的命令
CMD 容器启动命令
CMD指令的格式和RUN相似,也是两种格式
- shell 格式: CMD<命令>
- exec 格式: CMD[“可执行文件”, “参数1”, “参数2”…]
- 参数列表格式: CMD[ “参数1”, “参数2”…], 在指定了ENTRYPOINT指令后,用CMD指定具体的参数
Dockefile中够可以有多个CMD指令,但只有最后一个生效,CMD会被 run之后的参数替换
11. ENTRYPOINT
指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
CMD和ENTRYPOINT区别在于:
- docker run之后的参数会替换CMD指令,但是不会替换ENTRYPOINT指令
- 有多个CMD指令时,只有最后一个CMD指令生效,而ENTRYPOINT有多个指令时,相当于ENTRYPOINT指令追加,多个ENTRYPOINT指令都会生效
12. ONBUILD
当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
保留字指令 | 说明 |
---|---|
FROM | 基础镜像,当前的新镜像是基于哪个镜像的 |
MAINTAINER | 镜像维护者的姓名和邮箱地址 |
RUN | 容器构建时需要运行的额外的命令 |
EXPOSE | 当前容器对我暴露出的端口 |
WORKDIR | 指定在创建容器后,终端默认登录的进来的工作目录,一个落脚点,如果不配置默认为根目录 进入之后目录为/ |
ENV | 用来在构建镜像过程中设置环境变量 |
ADD | 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包 |
COPY | 类似ADD,拷贝文件和目录到镜像中 |
VOLUME | 容器数据卷,用于数据保存和持久化工作 |
CMD | 指定一个容器启动时要运行的命令 |
ENTRYPOINT | 指定一个容器启动时要运行的命令 |
ONBUILD | 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发 |
BUILD | Both | RUN |
---|---|---|
FROM | WORKDIR | CMD |
MAINTAINER | ENV | |
COPY | EXPOSE | |
ADD | VOLUME | |
RUN | ENTRYPOINT | |
ONBUILD |