Dockerfile常用保留字指令
1. FROM
用于指定基础镜像,是Dockerfile的起始指令,新镜像会基于该基础镜像构建(如 FROM ubuntu:20.04 或 FROM tomcat:8 ),是镜像构建的“基础模板。
2. MAINTAINER
标注镜像维护者的姓名和邮箱
3. RUN
容器构建阶段( docker build 时)执行的命令,用于安装依赖、配置环境等操作,有两种格式:
shell格式:如
RUN apt-get install vim
,直接调用系统shell执行命令。
exec格式:如
RUN ["apt-get", "install", "vim"]
,以数组形式执行。
4.EXPOSE
声明容器运行时监听的端口
5.WORKDIR
作用是指定容器创建后,终端默认进入的工作目录,也会作为后续Dockerfile指令(如 RUN / COPY / ADD )的执行目录,相当于给容器操作设置了“默认落脚点”。
6.USER
指定该镜像以什么样的用户执行,默认root
7.ENV
设置容器内的环境变量,可被后续指令和运行时引用。
8.ADD
将宿主机目录下的文件拷贝进镜像且自动处理URL和解压tar压缩包。
9.COPY
和ADD类似
COPY 是Dockerfile中用于将本地主机的文件/目录复制到镜像(容器)内指定路径的指令。
普通格式:
COPY src dest
(<src源路径>:源文件或者源目录)
exec格式:
COPY ["src", "dest"]
(<dest目标路径>:容器内的指定路径,该路径不用事先建好,路径不存在会自动创建)
10.VOLUME
容器卷,用于数据保存和持久化工作
11.CMD
指定容器启动后默认执行的命令
注:一个Dockerfile里写多个 CMD ,只有最后一个会生效,CMD会被docker run之后的参数替换。
CMD是在docker run时运行的。
RUN是在docker build时运行的。
CMD三种格式:
shell 格式:
CMD <命令>
exec 格式:
CMD ["可执行文件", "参数1", "参数2"...]
参数列表格式:
CMD ["参数1", "参数2"...]
,在指定了 ENTRYPOINT 指令后,用 CMD 指定具体的参数。
12.ENTRYPOINT
也是用来指定一个容器启动时要运行的命令
类似于 CMD 指令,但是ENTRYPOINT不会被docker run后面的命令覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程。
注:ENTRYPOINT 的命令不会被 docker run 后的命令直接覆盖,只会将后者作为参数传递给 ENTRYPOINT ,这是和 CMD 的核心区。
C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:
一点编程也不会写的:零基础C语言学练课程
解决困扰你多年的C语言疑难杂症特性的C语言进阶课程
从零到写出一个爬虫的Python编程课程
只会语法写不出代码?手把手带你写100个编程真题的编程百练课程
信息学奥赛或C++选手的 必学C++课程
蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程
手把手讲解近五年真题的蓝桥杯辅导课程