本文章来自【知识林】
在使用Dockerfile一构建Docker镜像之前需要先搞清楚Dockerfile中都有哪些常用的指令,这样在使用起来才能得心应手。
这篇文章主要列举出Dockerfile中比较常用的指令及其用法和说明,需要注意的是这些指令都是全部大写。
FROM:
- 说明:指定该镜像的基础镜像
- 格式如:
FROM <image>或FROM <image>:<tag> - 示例:
FROM centos:7 - 注意:
FROM一般出现在文件头,且每个镜像都需要有一个FROM来指定基础镜像。
MAINTAINER:
- 说明:指定作者信息
- 格式如:
MAINTAINER <name> - 示例:
MAINTAINER 知识林 "393156105@qq.com"
RUN:
- 说明:在构建镜像时执行脚本
- 格式如:
RUN <command>、RUN ["exec", "par1", "par2"] - 示例:
RUN ls -l(以详细信息方式列表当前目录下的文件,跟在shell终端运行一样)
CMD:
- 说明:在运行容器时执行脚本
- 格式如:
CMD <command> <par1> <par2> ...、CMD ["exec", "par1", "par2"] - 示例:
CMD ["ls", "-l"] - 注意:一个Dockerfile中只有一条
CMD,如果有多条只执行最后一条;在运行容器时如果用户指定了运行命令则Dockerfile中的CMD将被覆盖。
ENTRYPOINT:
- 说明:在运行容器时执行脚本
- 格式如:
ENTRYPOINT ["exec", "par1", "par2"]、ENTRYPOINT command par1 par2 - 示例:
ENTRYPOINT ["catalina.sh", "run"] - 注意:一个Dockerfile中只有一条
ENTRYPOINT,如果有多条只执行最后一条;不可以被容器运行时的命令所覆盖。
EXPOSE:
- 说明:让Docker暴露容器的端口号,供容器外部使用
- 格式如:
EXPOSE <port> ... - 示例:
EXPOSE 8080
ENV:
- 说明:指定环境变量,在Dockerfile文件中的后续代码中使用,在容器运行时也可以使用
- 格式如:
ENV <key> <value> - 示例:
ENV tomcat_home /web/tomcat/
ADD:
- 说明:添加文件(夹)到容器
- 格式如:
ADD <src> <dest> - 示例:
ADD web.jar /web.jar - 注意:复制指定的
<src>到容器中的<dest>,<src>可以是Dockerfile所在目录的一个相对路径,也可以是一个URL,也可以是一个tar文件(tar文件将自动解压成文件目录)
COPY:
- 说明:添加文件(夹)到容器
- 格式如:
COPY <src> <dest> - 示例:
COPY web.jar /web.jar - 注意:与
ADD功能相似,只是不能指定URL,使用本地文件(夹)为源文件时,推荐使用COPY
VOLUME:
- 说明:创建一个挂载点
- 格式如:
VOLUME [path] - 示例:
VOLUME ["/datas"] - 注意:可以用作容器内部与宿主机的数据交互,一般用于数据库或文件数据的持久存储
WORKDIR:
- 说明:设置工作目录
- 格式如:
WORKDIR /path - 示例:
WORKDIR /web - 注意:可以使用绝对路径,也可以使用相对路径,设置之后的所有操作都将在这个目录下完成
特别注意
在上面的描述中可以看到有两组指令在功能上都差不多,但也是有区别的:
RUN、CMD、ENTRYPOINT执行脚本的指令- 三个指令都是执行脚本
RUN是在创建镜像是执行,即使用docker build命令时执行,在一个Dockerfile里面可以有多个RUNCMD和ENTRYPOINT是在运行容器时执行,即使用docker run命令时执行,这两个指令在Dockerfile中都只有最行一条被执行CMD在使用docker run时可以加参数将Dockerfile中的CMD覆盖ENTRYPOINT在Dockerfile中出现后就一定会在docker run时被执行,不必担心会被其他参数所覆盖。
ADD、COPY拷贝文件(夹)到容器ADD拷贝文件(夹)时可以指定本地文件、远程URL地址,如果拷贝的是tar文件时将会被自动解压成文件夹COPY拷贝文件(夹)时不可以指定远程URL地址,拷贝tar文件也不会被自动解压成文件夹,在拷贝本地文件时建议使用COPY
本文章来自【知识林】
Dockerfile指令详解
本文详细介绍了Dockerfile中常用指令及其用法,包括FROM、MAINTAINER、RUN、CMD等,并对比了RUN、CMD与ENTRYPOINT的区别以及ADD与COPY的不同之处。
534

被折叠的 条评论
为什么被折叠?



