前言
一、什么是Dockerfile构建镜像
1. 基本概述
2. Dockerfile指令和它们的作用:
2.1 From :指定基础镜像,构建新镜像的起点。
FROM ubuntu:20.04
2.2 MAINTAINER: 标识镜像的维护者。
MAINTAINER Your Name <your.email@example.com>
2.3 RUN: 在镜像中执行命令,用于安装软件包、更新系统等。
RUN apt-get update && apt-get install -y nginx
2.4 COPY/ADD: 将文件或目录从构建上下文复制到镜像中。
COPY ./app /app
2.5 WORKDIR: 设置工作目录,后续的命令将在该目录下执行
WORKDIR /app
2.6 EXPOSE: 声明容器运行时要监听的端口。
EXPOSE 80
2.7 CMD: 提供容器默认的执行命令,可以被docker run时的参数覆盖。
CMD ["nginx", "-g", "daemon off;"]
2.8 ENTRYPOINT: 设置容器启动时执行的命令,不可被docker run时的参数覆盖。
ENTRYPOINT: 设置容器启动时执行的命令,不可被docker run时的参数覆盖。
简单示例
docker build -t my_custom_image:tag .
3. 基本结构
部分 | 命令 |
基础镜像信息 |
FROM |
维护者信息 |
MAINTAINER |
镜像操作指令 |
RUN 、 ENV 、 COPY 、 ADD 、 EXPOSE 、 WORKDIR 、 ONBUILD 、 USER 、 VOLUME 等 |
容器启动时执行指 令 |
CMD 、 ENTRYPOINT |
图解说明
二、示例使用及说明、
1. 构建镜像文件
vim Dockerfile
FROM centos
MAINTAINER 2081718134@qq.com
WORKDIR /test
COPY spring.jar /test
2. 镜像运行
#java environment
export JAVA_HOME=/javaxl/jdk1.8.0_151(jdk解压路径)
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
ADD jdk-8u221-linux-x64.tar.gz /test
ENV JAVA_HOME=/test/jdk1.8.0_221
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
CMD ["java -jar spring.jar"]
3. 镜像优化
FROM centos
MAINTAINER 2081718134@qq.com
WORKDIR /test
COPY spring.jar /test
ADD jre-8u391-linux-x64.tar.gz /test
ENV JAVA_HOME=/test/jre1.8.0_391
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH=$JAVA_HOME/bin:$PATH
CMD java -jar spring.jar