FROM
表示新构建的镜像是基于哪个镜像的,指定一个已存在的镜像作为模板。dockerfile中第一条必须是from
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN
容器构建的时候需要运行的命令
有两种格式,shell格式和exec格式
shell格式,RUN 后面直接跟shell命令。例如:RUN yum -y i vim
exec格式,RUN ["可执行文件","参数1","参数2"]。例如:RUN ["./test.sh","dev","open"]
EXPOSE
当前容器对外暴露的端口
WORKDIR
在容器创建之后,终端进入容器后的默认目录
USER
指定该镜像以什么样的用户去执行,如果不指定,默认root
ENV
在构建镜像过程中设置环境变量,语法是 ENV key value
相当于在docker file脚本中定义变量,这个变量可以在当前脚本的后续指令中使用
VOLUME
定义容器数据卷,不了解容器数据卷的可以看这里:点这里
ADD
将宿主机目录下的文件拷贝到镜像中,并且会自动处理URL 自动解压tar压缩包
COPY
将宿主机目录下的文件拷贝到镜像中
CMD
指定容器启动后要干的事情,语法格式跟RUN类似,也是有两种形式
dockerfile中可以有多个CMD指令,但只有最后一个生效
CMD会被docker run 之后的参数覆盖掉
例如 docker run -it -p 8888:8888 centos /bin/bash
后面加了/bin/bash ,就会把docker file中的CMD指令覆盖掉
和RUN指令的区别就是,RUN是在docker build 构建的时候运行,CMD是在docker run 启动的时候运行
ENTRYPOINT
也是用来指定一个容器启动时要运行的命令
类似于CMD,但是不会被覆盖
搭配CMD一起使用时,CMD变成可变参数,可以被docker run时传的参数替换掉
例如:
ENTRYPOINT ["nginx","-c"]
CMD ["/etc/nginx/nginx.conf"]
直接运行
docker run nginx
相当于nginx -c /etc/nginx/nginx.conf
传参运行
docker run nginx -c /xxx.conf
相当于 nginx -c /xxx.conf