• Docker自定义镜像


     

    目录

     

    1、了解镜像结构

    2、Dockerfile语法

    2.1、什么是Dockerfile

    2.2、构建Java项目  

    2.2.1、需求:基于Ubuntu镜像构建一个新镜像,运行一个java项目

    2.2.2、基于java8构建Java项目

    2.3、总结 


    1、了解镜像结构

             简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、依赖文件等组合,然后编写好启动脚本打包在一起形成的文件。

    镜像是分层结构,每一层称为一个Layer:

    BaseImage 层:包含基本的系统函数库、环境变量、文件系统
    Entrypoint :入口,是镜像中应用启动的命令
    其它:在 BaseImage 基础上添加依赖、安装程序、完成整个应用的安装和配置

    2、Dockerfile语法

    2.1、什么是Dockerfile

            构建自定义的镜像时,并不需要一个个文件去拷贝,打包。我们只需要告诉Docker,我们的镜像的组成,需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像。而描述上述信息的文件就是Dockerfile文件。

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

    2.2、构建Java项目  

    2.2.1、需求:基于Ubuntu镜像构建一个新镜像,运行一个java项目

                    1、将java项目打成jar包,并和所用的jdk一起上传到服务器

                    2、创建Dockerfile文件,并上传到服务器

                     Dockerfile的内容如下:

    # 指定基础镜像
    FROM ubuntu:16.04
    # 配置环境变量,JDK的安装目录
    ENV JAVA_DIR=/usr/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 8090
    # 入口,java项目的启动命令
    ENTRYPOINT java -jar /tmp/app.jar

                     3、使用Dockerfile构建镜像     

                           docker build -t 镜像名:镜像tag  Dockerfile所在的目录

                    4、 查看并基于镜像运行容器

                    5、访问项目测试 

                         通过ip+端口+接口路径访问项目

                     此时说明该项目已经成功的构建镜像,并且已经部署到docker容器了

    2.2.2、基于java8构建Java项目

            基于Ubuntu基础镜像,添加任意自己需要的安装包,构建镜像,但是却比较麻烦。所以大多数情况下,我们都可以在一些安装了部分软件的基础镜像上做改造。

            例如,构建java项目的镜像,可以在已经准备了JDK的基础镜像基础上构建。

                    1、修改Dockerfile为以下内容

    # 指定基础镜像
    FROM java:8-alpine

    # 拷贝jdk和java项目的包
    COPY ./docker-demo.jar /tmp/app.jar

    # 暴露端口
    EXPOSE 8090
    # 入口,java项目的启动命令
    ENTRYPOINT java -jar /tmp/app.jar

                    2、使用Dockerfile构建项目

    2.3、总结 

            1. Dockerfile的本质是一个文件,通过指令描述镜像的构建过程

            2. Dockerfile的第一行必须是FROM,从一个基础镜像来构建

            3. 基础镜像可以是基本操作系统,如Ubuntu。也可以是其他人制作好的镜像,例如:java:8-alpine

     

  • 相关阅读:
    【C++/STL】stack和queue(容器适配器、优先队列、双端队列)
    【什么是区块链】
    [数据集][目标检测]老鼠检测数据集VOC+YOLO格式4107张1类别
    【计算机网络】[第4章 网络层][自用]
    useEffect、useMemo、useCallback使用场景分析
    WPF(四) WPF 模板
    CentOS部署Skywalking
    牛客_小白月赛_61
    学习笔记-TP5框架学习笔记\(路由\)
    二叉树的学习
  • 原文地址:https://blog.csdn.net/m0_46979453/article/details/125267289