码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

     

  • 相关阅读:
    Mybatis-plus中Service和Mapper
    PHP+Lunix+GIT 如何快速使用宝塔WebHook快速自动化部署
    手机照片免费数据恢复软件EasyRecovery2024免费版下载
    详细总结SoC、DSP、MCU、GPU和FPGA等基础概念
    《Web安全基础》04. 文件操作安全
    02 | docker镜像文件制作
    读书充电,温暖你的冬日,本期为大家送出几本架构师成长和软件架构技术相关的好书,助你度过这个不太景气的寒冬!
    C#,哈密顿环问题(Hamiltonian Cycle problem)的算法与源程序
    Python机器视觉--OpenCV进阶(核心)--图像的开,闭运算,形态学梯度,顶帽,黑帽运算
    【小程序项目开发-- 京东商城】uni-app之自定义搜索组件(中)-- 搜索建议
  • 原文地址:https://blog.csdn.net/m0_46979453/article/details/125267289
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号