Dockerfile自定义镜像

要自定义镜像首先要了解什么是镜像


将镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。镜像是分层结构,每一层称为一个Layer,Entrypoint和BaseImage为基础层,一般一个镜像都包括这两层,其余为其他层


image.png

什么是Dockerfile


Dockerfile就是一个文本文件,其中包含一个个的指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer

image.png

image.png

更新详细语法说明,参阅官方文档:https://docs.docker.com/engine/reference/buider


实践案例


  • 编辑Dockerfile
#指定基础镜像
FROM ubuntu:16.04
#配置环境变量,JDK的安装目录
ENV JAVA_DIR=/user/local
#拷贝jdk和java项目的包
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
#安装JDK
RUN cd $JAVA_DIR tar -xf ./jdk8.tar.gz mv ./jdk1.8.0_144 ./java8
#匹配环境变量
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
#暴露端口(只是给使用者查看用)
EXPOSE 8080
#入口,java项目的启动命令(就是运行该镜像时要执行的命令)
ENTRPYPOINT java -jar /tmp/app.jar
  • 构建镜像
    docker build -t javaweb:1.0 <Dockerfile文件目录>

思考


在Dockerfile中有一大部分是配置java jdk的运行环境的,如果我们有很多个镜像,都需要做同样的一件事,那就很傻瓜了,这就有一个官方镜像帮我们配置好了java运行环境,他就是java:8-alpine镜像,使用它作为自定义镜像的基础镜像,可以省去Dockerfile的一大半命令

#指定java:8-alpine为基础镜像
FROM java:8-alpine
#拷贝java项目
COPY ./docker-demo.jar /tmp/app.jar
#暴露端口(只是给使用者查看用)
EXPOSE 8080
#入口,java项目的启动命令
ENTRPYPOINT java -jar /tmp/app.jar
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容