Docker从入门到精通(四)
自定义镜像,我们最常用的就是自己编写dockerfile文件,然后构建镜像,一般而言,dockerfile分为四部分,基础镜像信息,维护者信息,进项操作指令,和容器启动执行指令,所以我们必须熟悉编写dockerfile的各个指令
- FROM
指定所创建镜像的基础镜像,如果本地不存在,默认回到docker Hub下载指定镜像
- MAINTAINER
指定维护者信息,格式MAINTAINER<name>
- RUN
用于docker build 过程中执行的指令,并提交为新的镜像
- CMD
类似RUN,区别是用于指定启动容器是默认执行的命令,是基于用dockerfile构建的新镜像启动的时候执行的命令,每个dockerfile只有一条CMD命令,如果指定多条指令,只有最后一条会被执行
- LABLE
用于执行生成镜像的元数据标签信息,LABLE <KEY>=<VALUE> <KEY>=<VALUE> ...
- EXPOSE
声明镜像内服务所监听的端口,EXPOSE <port> <port> ..,只起到声明作用,并不会自动完成端口映射,用于容器指定端口实现外界通讯
- ENV
指定环境变量,在镜像生成过程中会被后续RUN指定使用
- ADD
该命令将复制指令的src路径下的内容到容器中的dest路径下, ADD src dest
- COPY
类似ADD,区别是ADD支持tar文件和URL COPY src dest
- ENTRYPOINT
类似CMD,用于指定启动容器是默认执行的命令,区别是ENTRYPOINT不能被docker run 指定参数覆盖,如果必须进行覆盖可以docker run --entrypoint 参数覆盖
- VOLUME
创建一个数据卷挂载点, VOLUME [ path]
- USER
运行容器时的用户名或UID,用后续run cmd,等指令也会使用指定的用户身份
- WORKDIR
为RUN CMD 和ENTRYPOINT指定工作目录 WORKDIR [path]
- ARG
类似于ENV,区别是可以用docker build --build-arg <name>=<value>,进行修改
- ONBUILD
使用ONBUILD 的dockerfile构建的镜像,如果作为其他新的镜像dockerfile 的基础镜像,那么新的镜像dockerfile中使用from baseImage的时候,会自动执行ONBUILD指令的内容