当前位置: 首页 > news >正文

docker镜像解决的一些问题

1 概述

Docker镜像技术通过创新性的设计,彻底解决了应用交付领域的核心痛点,已经成为已成为云原生时代的事实标准。其核心价值在于​​通过标准化封装实现"一次构建,处处运行"​​,从根本上改变了软件交付的生命周期。

2 解决的问题

2.1 打包问题

一个可执行程序包,可能是各种各样的语言编写出来的,对环境有不同的要求。比如Java语言的jar包,需要有JVM环境才能够执行;Python的代码包,需要安装Python和用pip安装一系列依赖包环境才能执行。

把这个可执行包部署到不同的操作系统时,根据不同的操作系统的要求,需要做一些不同的环境变量等配置。比如Java环境在Windows里配环境变量和在Linux环境配环境变量的方式不一样,在部署jar包的时候,在不同的环境上部署的脚本要写成不一样的。

在执行可执行程序包的时候,不同语言、不同操作系统,需要提供不同的启动脚本。

docker镜像则创造性地把可执行包所依赖的环境、配置、启动脚本全部打包成一个镜像包,里面的环境甚至还包含了一整套Linux的目录和文件,额外再根据需要加上相关的依赖包、配置,指定好启动脚本。这样的一个包,不管在windows、Linux、iMac,还是在物理机、虚拟机、各种云平台,都可以用一个简单的命令就可以运行。这代表着可以很轻松地在各个环境中迁移,真正做到打包一次,各个平台执行。

2.2 部署问题

要部署可执行包,除了准备好可执行包,还需要根据不同的操作系统,安装相关的依赖,进行相关的配置,准备相关的启动脚本等,然后再安装可执行包、执行可执行包,完成部署。

由于docker镜像把操作系统等环境、需要的依赖、配置、启动脚本等都打包到镜像包里了,原来需要根据不同语言、不同操作系统等进行的一系列准备工作全都消失了,只剩下拉取镜像包和执行镜像包两个动作,这样部署就非常简单。

2.3 资源利用问题

传统的部署,为了在一台物理机上部署多应用,一般采用虚拟机的方式。虚拟机由于虚拟化管理程序,在Linux上运行Virtual Machine Manager(VMM),在windows上运行Hypervisor,这些虚拟化管理程序需要占用10%~30%的CPU、内存等资源。而Docker是通过linux的Cgroups、Namespace的配置来进行隔离,属于内核级的虚拟化,占用的资源比虚拟机节省80%以上,整体性能可以提高1~2个数量级。

2.4 更新问题

在需求变动后,打包、部署等都需要更新。由于docker的镜像包是一层层叠加而成的,如果要修改的话,只需要修改某些层或者增减某些层,然后重新打包即可。这些内容一般通过dockerfile来进行维护,这些改动只需要在dockerfile上调整,然后重新打包即可,非常的方便。

镜像包更新后,docker上拉取包也比较高效,只需要拉取更新的层即可。docker的创建和删除容器的速度也很快,删除掉老的容器,再创建和启动新版本镜像的容器即可。当部署的服务器比较多,还可以用相关的调度工具,逐步把所有的应用都更新了。

http://www.dtcms.com/a/334733.html

相关文章:

  • 搭建ktg-mes
  • 每日面试题22:静态代理和动态代理的区别
  • C语言指针运算题
  • [Python]PTA:实验2-3-2-for 求N分之一序列前N项和
  • HTML 常用属性介绍
  • 教育的终极指向:一场精心准备的“得体退出”
  • InfluxDB 数据迁移工具:跨数据库同步方案(一)
  • 一个.NET开源、轻量级的运行耗时统计库
  • 解决 Windows 下运行 MCP 脚本弹出 WSH 错误窗口的问题 | Windows Script Host
  • vscode配置cpp运行和调试环境(保姆级)
  • 一文入门Gin框架
  • 【运维心得】三步10分钟拆装笔记本键盘
  • 【自用】JavaSE--特殊文件Properties与XML、日志技术
  • 《零基础掌握飞算Java AI:核心概念与案例解析》
  • Swift 实战:实现一个简化版的 Twitter(LeetCode 355)
  • Cohere 开发企业级大型语言模型(LLM)
  • Vue实例中的其他属性【5】
  • 安全审计-iptales防火墙设置
  • Java硬件融合实战:Vector API+ROCm加速大模型推理优化解锁AMD GPU异构算力,实现LLM本地化部署
  • Mysql常见的优化方法
  • OpenShift 4.19安装中的变化
  • 失落城堡2 送修改器(Lost Castle 2)免安装中文版
  • 安卓11 12系统修改定制化_____修改系统默认域名解析规则 实现屏蔽广告 屏蔽应用更新等功能
  • JavaScript手录17-原型
  • Java后台生成多个Excel并用Zip打包下载
  • 《AI 与数据质量的深度碰撞:颠覆传统治理模式的变革》文章提纲
  • 【C++语法】手写堆与有关堆的容器/函数
  • CMake进阶: 配置文件(configure_file)
  • 数据结构初阶(17)排序算法——非比较排序(计数排序·动图演示)、排序算法总结
  • 打卡day40