镜像的定制实际上就是定制每一层所添加的配置和文件。
如果可以把每一层修改、安装、构建、操作的命令都写入到一个脚本,用这个脚本文件来构建、定制镜像,并且重复利用、镜像的构建透明化、体积的优化。那这个脚本称之为Dockerfile
目前的仓库镜像很难找到一个满足项目需求、非常好用的镜像,就需要自定义镜像
基本指令有13个,指令必须大写,分别是:
FROM
MAINTAINER
RUN
CMD
EXPOSE
ENV
ADD
COPY
ENTERPOINT
VOLUME
USER
WORKDIR
ONBUILD
用法:FROM
说明:Dockerfile第一个指令必须为FROM
其指定一个构建镜像的基础源镜像,如果本地Docker镜像没有则会从公共库中拉取pull,没有指定镜像的Tag则会使用默认的latest标签Tag,可以出现很多次,如果想在同一个Dockerfile中构建多个镜像
用法: MAINTAINER
说明:描述镜像的创建者名称和邮箱
用法:RUN“command”“param1”“param2”“…”
说明: RUN命令是执行之后会生成一个新的镜像,也可以是镜像的分层构建。一句RUN就是一个分层,也就相当于一个版本。RUN后面的都需要双引号,不能用单引号,也可以不写?yes or no.
用法:CMD[“command”,“param1”,“paran2”,"…"]
说明:CMD命令在Dockerfile中只能出现一次,如果有多次,则只有最后一次生效
用法:EXPOSE port1 port2 …
说明:设置容器对外映射的容器端口号,在docker run -p的时候生效
用法:ENTRYOPINT “command” “param1”“…”
说明: 和CMD一样,唯一的区别是不能被docker run命令的执行命令覆盖,如果想覆盖则需要带上 --entrypoint,如果是多项则最后一个有效
用法:USER
说明:USER指令用于指定容器执行程序的用户身份,默认是root用户。在docker run中可以通过 -u选项覆盖USER指令的设置
注意:docker容器中的root用户密码是随机分配的
用法:ONBUILD COPY
说明:镜像触发器,当一个镜像被其他镜像作为基础镜像是执行
因篇幅问题不能全部显示,请点此查看更多更全内容