首页 > 其他分享 >容器化技术的使用和优缺点

容器化技术的使用和优缺点

时间:2023-06-05 22:36:56浏览次数:93  
标签:容器 部署 虚拟机 优缺点 技术 镜像 Docker docker

当前,容器化技术非常流行,各大小公司都在使用。那么容器化技术在实际项目中如何运用?有哪些优缺点?

容器化技术是什么

在容器化技术出现之前,部署系统非常麻烦,以一个简单的博客系统为例,博客系统设计如下:

  1. 前后端分离,分别独立开发和部署
  2. 前端使用vue,负责数据展示
  3. 后端java,使用spring框架,负责业务逻辑处理,给前端提供接口
  4. 数据库使用mariadb

这个系统该如何部署?

  1. 数据库部署
    首先安装mariadb服务,再执行sql语句建库建表
  2. 后端的部署
    先安装jdk。后端在构建后会生成jar包,因使用了spring框架,jar包是自带tomcat,配置好数据库地址和端口后,直接用java -jar命令运行即可
  3. 前端的部署
    前端在构建后会生成静态文件,即是html、js、css文件,同时需要调用后端接口获取数据,用于展示。那么就需要部署nginx,nginx的配置文件需要指定静态文件的位置,同时需要配置后端服务的代理地址。

部署图如下:

部署图

这样部署有以下几个问题:

  1. 需要手动安装mariadb、jdk、nginx。可能遇到安装包损坏、权限不够等各种问题,且每个新环境都需要重新安装一遍。
  2. 手动执行sql语句,手动配置nginx,手动配置mariadb连接地址等。很容易配置错误,每个新环境都需要重新配置一遍。
  3. 升级需要替换jar包、前端静态文件等,非常复杂。

有没有一种方案能解决上述重复安装、重复配置、升级麻烦的苦恼?
有!
那就是容器化技术,代表技术是虚拟机和Docker
容器化技术最显著的特点是:自带环境。就是说容器自己带有应用运行需要的环境和全部依赖。

虚拟机大家都用过。在电脑上安装虚拟机软件,再安装操作系统,再安装其他需要的环境。再部署应用,其他地方需要部署的话,则将虚拟机文件拷贝到其他机器上。

Docker是个划时代的技术,它极大提高了应用的维护效率,降低了应用开发的成本!使用Docker,可以让应用的部署、测试和分发都变得前所未有的轻松!

什么是Docker,这里只做一个简单的介绍,详细的内容请查看Docker官网
Docker基于Linux内核的cgroup、namespace,以及OverlayFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术,使得Docker技术比虚拟机技术更为轻便、快捷。

下面的图片比较了Docker和传统虚拟化方式的不同之处。传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。

传统虚拟化
传统虚拟化

Docker
Docker

Docker同传统的虚拟化技术相比,有以下优点:

  • 更高效的利用系统资源
  • 更快速的启动时间
  • 一致的运行环境
  • 持续交付和部署
  • 更轻松的迁移
  • 更轻松的维护和扩展

对比总结如下:

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 一般为MB 一般为GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个

容器化技术怎么用

主要有以下几个步骤:

  1. docker安装
    首先需要安装docker环境,Docker官网有安装教程,Linux、Mac、Windows都支持。

  2. 镜像构建
    镜像是docker运行的基础,应用系统交付物即是镜像。镜像是一个特殊的文件,包含了运行时所需的程序、库、资源、配置、环境变量等参数。
    镜像的构建,都是依赖基本的镜像,再将应用集成进去。例如后端镜像,以包含了Linux及jdk环境的镜像为基础,再将应用的jar包放入镜像中,jar包在这个自闭的环境中运行,不受外界影响。
    实际应用中,会按照镜像类别分为:

    • 基础镜像
    • 初始化镜像
    • 后端镜像
    • 前端镜像

    以博客系统为例,需要构建哪些镜像呢?

    类别 名称 作用
    基础镜像 mariadb镜像 提供mariadb服务
    基础镜像 ngxin镜像 提供ngxin服务
    初始化镜像 sql镜像 建库建表,一般只执行一次
    初始化镜像 ngxin配置镜像 前端静态文件处理,后端接口代理
    后端镜像 java镜像 博客后端服务
    前端镜像 静态文件镜像 前端界面

    上述不同类别的镜像有不同的生成方式,后面的文章再进行讲解。

  3. 镜像的运行
    镜像依赖docker环境运行,即是启动了一个容器。容器可理解为一个进程,除了可以提供服务外,也可以通过目录映射,读写宿主机上的文件。

    这么多镜像需要一个一个的启动吗?那工作量很大。需要进行统一的管理维护。

    可以为博客系统生成一个shell文件,文件中主要使用 docker run 命令写明了运行容器需要的镜像名称、环境变量等,也指明了镜像启动的先后顺序,例如基础镜像最先启动,再启动初始化镜像,再启动后端镜像,最后启动前端镜像。

    也可以使用 docker compose 来维护容器,会生成一个yaml文件,写明了镜像名称、环境变量等,需要在安装了docker compose的环境中运行。

    容器管理可以使用Portainer,或者使用 K8S

    以上的shell文件、docker compose yaml文件,只需要做少许的配置,例如换IP等,就可以在任何一个装有docker的环境中使用一条命令将博客系统运行起来,省去了安装软件、做各种配置等操作,而且无论哪个环境运行,博客系统的表现都是一致的。

总结

  1. 自带环境使得镜像保持了一致性,不会出现环境问题、配置问题等
  2. 更方便分发和维护

标签:容器,部署,虚拟机,优缺点,技术,镜像,Docker,docker
From: https://www.cnblogs.com/leanfish/p/17459102.html

相关文章

  • 第三次技术问答 ---- Spring&&Spring Boot
    Spring框架1、说说你对SpringIOC的理解?答:控制反转将对象的创建和管理由程序员反转给spring程序管理Spring反向控制应用程序所需要使用的外部资源,类原来自己主动new对象,变成交给springIoc容器管理,配置好java对象的bean即可Spring控制的资源全部放置在Spring容器中,该容......
  • 顺序表 与 链表 的优缺点比较涅~( ̄▽ ̄)~*
    顺序表  优点是可以随机存取元素,存储密度高,结构简单;        缺点是需要一片地址连续的存储空间,不便于插入和删除元素(因为插入需要将大量的元素向后移动,删除需要将后续大量的元素向前覆盖),表的容量难以确定; 链表   优点是便于结点的插入与删除(只需要修......
  • 聊聊公司技术上的奇葩规定——计算机使用
    首先说明下公司的技术架构。MySQL+PHP+Java,纯互联网应用,Docker容器部署微服务在AWS上面。数据上没有过多敏感性,不涉及到很多敏感数据,身份识别信息通常使用的是第三方平台,我们本地不存储用户身份信息。电脑只能使用Mac如果你是Mac电脑的深度爱好者,那你有福了。公司......
  • 小程序容器技术助力数字门户拓展多样化服务
    数字门户是指提供一站式访问和集成多个在线服务、信息和资源的网络平台。它通常是一个网站或应用程序,为用户提供广泛的功能和服务,如新闻、天气预报、电子邮件、在线购物、社交媒体、银行服务、电子支付、在线学习、政府服务等。数字门户的目标是通过集成和整合各种在线服务,为用户......
  • 百度倾力出品|《神经网络机器翻译技术及产业应用》正式上线
    随着经济社会的国际交流合作日益密切,人们迫切需要高质量、高效率的跨语言信息获取和传播工具。《神经网络机器翻译技术及产业应用》以产业需求为牵引,分析了新时期机器翻译的产业需求特点和挑战,介绍了神经网络翻译的基本理论、前沿技术以及面向产业应用的实用系统开发方法。《神经网......
  • 凌志软件加入飞桨技术伙伴计划,共同探索“AI+金融”应用场景落地
    近日,苏州工业园区凌志软件股份有限公司正式加入飞桨技术伙伴计划,双方将探索人工智能、大数据、云计算、区块链等新兴技术在金融领域的应用和创新,推动“AI+金融”在垂直领域的应用场景落地。苏州工业园区凌志软件股份有限公司凌志软件是一家金融软件公司,主要业务为对日软件开发业务......
  • ChatJPT:开创人机交互新纪元的技术突破
      人工智能技术的快速发展正在深刻改变着我们与机器之间的交互方式。ChatJPT作为一项创新的技术,为人机交互带来了全新的可能性。本文将探讨ChatJPT的技术原理、应用场景以及对未来社会的影响。ChatJPT的技术原理ChatJPT是基于GPT-3.5架构开发的大型语言模型,它具备深度学习和自......
  • 嵌入式知识分享:Docker容器部署方法说明
    前 言本指导文档适用开发环境:Windows开发环境:Windows764bit、Windows1064bitLinux开发环境:Ubuntu18.04.464bit虚拟机:VMware15.1.0Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,亦......
  • 智慧城市建设需要依靠哪些技术?
    智慧城市建设需要依靠多种技术来实现数字化、智能化和可持续发展的目标。其中,数字孪生技术在智慧城市建设中起着重要的作用。首先,数字孪生技术可以提供高度精确的城市建筑和基础设施的数字模型。通过对城市的建筑、道路、水系等要素进行数字化建模,可以实现对城市的全面理解和分析......
  • Kubernetes架构:构建容器化应用的可扩展管理平台
    摘要:Kubernetes是一款用于容器编排和管理的开源工具,其架构设计具有高度可扩展性和弹性。本文将介绍Kubernetes的架构,包括Master节点和Worker节点的角色和功能,以及它们之间的交互方式,帮助读者更好地理解Kubernetes的工作原理。引言:在当今的云原生应用开发环境中,容器化技术的普及......