看完这篇,妈妈还会担心你Docker入不了门?
FROM
指定基础镜像,当前镜像是基于哪个镜像创建的,有点类似 Java 中的类继承。FROM 指令必是 Dockerfile 文件中的首条命令。 MAINTAINER
镜像维护者的信息,该命令已经被标记为不推荐使用了。 LABEL
给镜像添加元数据,可以用 LABEL 命令替换 MAINTAINER 命令。指定一些作者、邮箱等信息。 ENV
设置环境变量,设置的变量可供后面指令使用。跟 Java 中定义变量差不多的意思! WORKDIR
设置工作目录,在该指令后的 RUN、CMD、ENTRYPOINT, COPY、ADD 指令都会在该目录执行。如果该目录不存在,则会创建! RUN
RUN 会在当前镜像的最上面创建一个新层,并且能执行任何的命令,然后对执行的结果进行提交。提交后的结果镜像在 Dockerfile 的后续步骤中可以使用。 ADD
从宿主机拷贝文件或者文件夹到镜像,也可以复制一个网络文件!如果拷贝的文件是一个压缩包,会自动解压缩! COPY
从宿主机拷贝文件或者文件夹到镜像,不能复制网络文件也不会自动解压缩! VOLUME
VOLUME 用于创建挂载点,一般配合 run 命令的 -v 参数使用。 EXPOSE
指定容器运行时对外暴露的端口,但是该指定实际上不会发布该端口,它的功能是镜像构建者和容器运行者之间的记录文件。 回到容器命令中的 run 命令部分,run 命令有 -p 和 -P 两个参数。 如果是 -P 就是随机端口映射,容器内会随机映射到 EXPOSE 指定的端口;如果是 -p 就是指定端口映射,告诉运维人员容器内需要映射的端口号。 CMD
指定容器启动时默认运行的命令,在一个 Dockerfile 文件中,如果有多个 CMD 命令,只有一个最后一个会生效! 同样是可以执行命令,可能你会觉得跟上面的 RUN 指令很相似,RUN 指令是在构建镜像时候执行的,而 CMD 指令是在每次容器运行的时候执行的!docker run 命令会覆盖 CMD 的命令! ENTRYPOINT
这个指令与 CMD 指令类似,都是指定启动容器时要运行的命令,如果指定了 ENTRYPOINT,则 CMD 指定的命令不会执行! 在一个 Dockerfile 文件中,如果有多个 ENTRYPOINT 命令,也只有一个最后一个会生效!不同的是通过 docker run command 命令会覆盖 CMD 的命令! 执行的命令不会覆盖 ENTRYPOINT,docker run 命令中指定的任何参数都会被当做参数传递给 ENTRYPOINT! RUN、CMD、ENTRYPOINT 区别:
USER
用于指定运行镜像所使用的用户。 ARG
指定在镜像构建时可传递的变量,定义的变量可以通过 dockerbuild --build-arg = 的方式在构建时设置。 ONBUILD
当所构建的镜像被当做其他镜像的基础镜像时,ONBUILD 指定的命令会被触发! STOPSIGNAL
设置当容器停止时所要发送的系统调用信号! HEALTHCHECK
该指令可以告诉 Docker 怎么去检测一个容器的运行状况! SHELL
用于设置执行命令所使用的默认的 Shell 类型!该指令在 Windows 操作系统下比较有用,因为 Windows 下通常会有 CMD 和 Powershell 两种 Shell,甚至还有 SH。 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |