FROM:指定基础镜像,比如你要创建一个springboot项目的镜像,那么就需要jre作为基础镜像;
查找需要的基础镜像的方法:docker serch xxxx 或者去docker hub上查找;
RUN:构建容器运行的命令,格式有两种:
1)RUN ['execuable','param1','param2']
2)RUN <command>
CMD:容器启动时要执行的命令
CMD["SH","-c","echo $HOME"]
CMD command param1 parma2
第一中格式的命令,参数都用双引号
MAINTAINR:指定作者,就是这个dockerfile是谁编写的;
EXPOSE:暴露容器运行时的监听端口给外部;
ENV:设置环境变量 ;
语法有两种:ENV <key> ..<value> 只能设置一个值
ENV <key>=<value>..... 可以设置多个值
ADD:一个复制命令,把文件复制到镜像中:
命令格式: ADD <src> <src>
ADD ["<src>",...."<dest>"]
<dest>路径的填写可以是容器内的绝对路径,也可以是相对于工作的目录的相对路径
<src> 可以是一个本地的文件或者压缩包,还可以是一个url
COPY: COPY与ADD一致,唯一的区别就是<src>只能是本地的文件
ENTRYPOINT:与CMD命令很像,都是在容器启动时执行命令,但是与CMD还是有一些区别:
相同点:
只能写一条,如果写了多条,那么只有最后一条生效
启动容器才执行
不同点:
ENTRYPOINT不会被Command覆盖,CMD会被覆盖;
但是如果docker run 的-entrypoint会覆盖ENTRYPOINT命令
任何docker run 设置的命令参数或CMD指令命令,都将作为ENTRYPOINT指令的命令参数,追加到ENTRYPOINT指令的命令之后
例如:
ENTRYPOINT ["top","-b", "-H"]
在执行docker run <container-name> -v 启动容器则容器执行的命令就是 top -b -v
VOLUME:挂载目录;
将本地文件夹或者其他容器的文件夹挂载到当前容器下
语法: volume ["/data"]
使用场景一般是需要持久化数据,比如数据库;
WORKDIR:设置工作目录;
WORKDIR /path/dir