DockerFile
关键字
FROM
基础镜像,当前新镜像是基于那个镜像的,指定一个已经存在的镜像作为模板
FROM openjdk:8
MAINTAINER
镜像维护者的姓名和邮箱地址
RUN
容器构建时需要运行的命令,在docker build时运行
一共有两种格式
- shell格式
- exec格式
EXPOSE
当前容器对外暴露的端口
WORKDIR
指定在创建容器后的工作目录
USER
指定该镜像亿什么样的用户去执行
ENV
环境变量
ADD
将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包
COPY
类似ADD,拷贝文件和目录到镜像中,将从构建上下文目录中<源路径>的文件/目录复制到新的一层镜像的<目标路径>的位置
VOLUME
CMD
指定容器启动后要干的事情
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD指令会被 docker run 后面的参数覆盖
和RUN的区别
ENTRYPOINT
也是用来指定一个容器启动时要运行的命令
ENTRYPOINT 可以和CMD一起用,一般是变参才会使用CMD,这里的CMD等于是在给ENTRYPOINT传参。当指定了ENTRYPOINT后,CMD的含义就发生了变化,不再是直接运行其名了而是将CMD的内容作为参数传递给ENTRYPOINT指令,他两个组合会变成
案列如下:假设已通过Dockerfile 构建了 nginx:test镜像
FROM nginx
ENTRYPOINT [“nginx”, "-c"] #定参
CMD ["/etc/nginx/nginx.conf"] #变参