组成部分 | 说明 |
基础镜像信息 | 使用 FROM 关键字指定基础镜像信息,必须是 Dockerfile 文件的第1条指令。 |
维护者信息 | 使用 MAINTAINER 关键字指定,可以使用 Dockerfile 文件创建者的姓名或者电子邮件作为维护者信息。 |
镜像操作指令 | 每执行一条镜像操作指令,将在镜像中添加新的一层。可以根据需要使用一条或者多条镜像操作指令。 常见的镜像操作指令有:RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME 等。 |
容器启动执行指令 | 用于指定在启动容器时需要执行的命令,通过关键字 CMD、ENTRYPOINT 指定。 |
在完成 Dockerfile 文件的编写后执行 docker build 命令,会根据 Dockerfile 文件中上下文的内容构建新 docker 镜像。这个构建过程会被递归处理。因此,如果在 Dockerfile 文件中含有子路径或者 url 等信息,都被递归处理。
docker build 命令在使用 Dockerfile 文件生成镜像时,会通过 docker 守护进程执行 Dockerfile 文件中的每一条指令,并在每一步执行完成后生成一个新镜像。当所有指令执行完成后,会输出最终镜像的 id。
当镜像最终生成后,docker 守护进程会自动清理 docker 的上下文环境,并自动重用已生成的中间镜像,以加速构建的速度。
创建 Dockerfile 文件
- sudo tee Dockerfile <<-'EOF'
-
- FROM centos
- MAINTAINER 'rike'
- RUN mkdir /root/training
- RUN mkdir /root/tools
- COPY openlogic-openjdk-8u342-b07-linux-x64.tar.gz /root/tools
- RUN tar zxvf /root/tools/openlogic-openjdk-8u342-b07-linux-x64.tar.gz -C /root/training
- ENV JAVA_HOME /root/training/openlogic-openjdk-8u342-b07-linux-x64
- ENV PATH $JAVA_HOME/bin:$PATH
- COPY apache-tomcat-8.5.84.tar.gz /root/tools
- RUN tar zxvf /root/tools/apache-tomcat-8.5.84.tar.gz -C /root/training
- COPY MyDemoWeb.war /root/training/apache-tomcat-8.5.84/webapps
- ENTRYPOINT ["/root/training/apache-tomcat-8.5.84/bin/catalina.sh","run"]
-
- EOF