FROM
基础镜像,当前新镜像是基于哪个镜像的。
相当于java中extends关键字
FROM scratch(挠,搔(痒处)) 是最基础的镜像,相当于java中的Object。
MAINTAINER
镜像维护作者的姓名和邮箱地址
RUN
容器构建的时候需要运行的命令,相当于java程序员System.out.print("..."),eg:
RUN mkdir /data && chown redis:redis /data
EXPOSE
对外暴露的端口
WORKDIR
指定在创建容器后,终端默认登录进来的工作目录,一个落脚点,eg:
WORKDIR /data
ENV
定义环境变量,这个环境变量可以在后续的任何RUN指令中使用,这就如同在命令前面指定了环境变量前缀一样;也可以在其它指令中直接使用这些环境变量,eg:
ENV MY_PATH /usr/mytest
WORKDIR $MY_PATH
COPY
拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录
复制到
新的一层的镜像内的<目标路径>位置,eg:
COPY src dist
ADD
跟COPY功能一样,但是功能更强大,COPY是直接拷贝,ADD是拷贝+解压
命令会自动处理URL和解压tar压缩包
ADD centos-7-docker.tar.xz /
VOLUME
容器数据卷,用于数据保存和持久化工作
CMD
- 指定一个容器启动时要运行的命令
- Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT
- 指定一个容器启动时要运行的命令
- ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
- 与CMD的区别:CMD 只有最后一个生效,ENTRYPOINT会有多个生效
ONBUILD
当构建一个被继承的Dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild被触发。
网友评论