Dockerfile 是一种文本文件,用于定义和配置 Docker 镜像。通过编写 Dockerfile,我们可以自动化地构建镜像,并将应用程序及其依赖打包成一个可移植的容器。
Dockerfile 使用一系列的指令来描述镜像的构建过程,这些指令被称为 Dockerfile 命令。下面是一些常用的 Dockerfile 命令:
# 使用官方 Tomcat 镜像作为基础镜像
FROM tomcat:9.0.50-jdk11
MAINTAINER:镜像维护者的名字和邮箱地址,不必要。
ENV:设置环境变量。
# 使用官方 Tomcat 镜像作为基础镜像
FROM tomcat:9.0.50-jdk11
# 设置环境变量,指定 Tomcat 的安装目录
ENV CATALINA_HOME /usr/local/tomcat
# 使用官方 Tomcat 镜像作为基础镜像
FROM tomcat:9.0.50-jdk11
# 设置环境变量,指定 Tomcat 的安装目录
ENV CATALINA_HOME /usr/local/tomcat
# 设置工作目录,切换到 webapps 目录下
WORKDIR $CATALINA_HOME/webapps
RUN:在镜像中执行
命令。两种格式:shell、exec。构建时直接运行(docker build)
ADD:将主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包。
COPY:将文件从主机复制到镜像中。例如:COPY app.py /app/
VOLUME:容器卷。
EXPOSE:声明容器运行时要监听的端口。例如:EXPOSE 8080
CMD:指定容器启动
时要执行的命令。支持shell、exec、参数列表格式。例如:
ENTRYPOINT:也是指定容器启动时要执行的命令。但是不会被docker run后面的指令覆盖,而且会将这些命令行作为参数传给ENTRYPOINT指令的程序。
ENTRYPOINT可以和CMD一起用,一般CMD是作为参数提供给ENTRYPOINT。
FROM nginx
ENTRYPOINT ["nginx","-c"]
CMD ["/etc/nginx/nginx.conf"]
# 等同于
# docker run nginx -c /etc/nginx/nginx.conf
这些只是 Dockerfile 中的一部分常用命令,更多的命令可以根据实际需求进行学习和使用。
在编写 Dockerfile 时,有一些书写规则需要遵守:
Dockerfile 的作用主要有以下几个方面:
在编写 Dockerfile 时,还需要注意以下几点: