微服务的解决方案——容器

容器技术是微服务的解决方案之一。与虚拟机相比,容器硬件开销小、启动快,允许每个微服务单独运行。容器可通过Linux命名空间和Linux控制组实现进程隔离,但存在限制,如内核需匹配、硬件架构要相同。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器技术是微服务的解决方案之一。

容器和虚拟机

以往的单体应用部署通常使用虚拟机创造出应用需要的操作系统和依赖环境,但是虚拟机消耗的硬件资源较大。当单体应用被拆解为体量较小的微服务时,使用虚拟机就不太划算了。所以硬件开销比虚拟机小的容器成为一种可选的微服务解决方案。
容器类似于虚拟机,可以创造出独立的运行环境。但和虚拟机不同的是,容器内的进程运行在宿主机的操作系统上,只是进程本身会觉得自己是操作系统内唯一的进程。而虚拟机需要自己的系统进程,会损耗更多的系统资源,所以通常会把多个单体应用分组部署在一个虚拟机内。容器技术允许每个微服务应用单独运行在一个容器内,最终使得同一台裸机上可以运行更多的应用程序。另外运行容器也不像虚拟机那样需要开机(运行自己的系统服务),所以容器中的进程可以更快的启动。

容器的隔离方案

容器可以通过Linux命名空间和Linux控制组这两种方案实现进程之间的隔离。

Linux命名空间

linux中,用多种资源类型:

  • Mounf(mnt)
  • Process ID(pid)
  • Network(net)
  • Inter-process communicaion (ipd)
  • UTS
  • User ID(user)
    每种类型的资源都有命名空间用于隔离对应的资源,比如UTS命名空间决定了运行在命名空间里的进程能看见哪些主机名和域名。 通过分派两个不同的 UTS 命名空间给一对进程, 能使它们看见不同的本地主机名。
    当创建了一个新的命名空间后,就可以在这个命名空间内组织这些资源。而在这个命名空间内运行的程序只能看到相同命名空间内的资源。
Linux控制组

Linux控制组/cgroups是一种Linux的内核功能,用于限制一个进程或一组进程可以使用的资源。

容器的限制
  • 容器没有自己的内核,所以如果宿主机的内核和容器的内核模块不能匹配,那么容器时不能在这台宿主机上运行的
  • 容器只能运行在和编译机器的架构具有相同硬件架构的宿主机上。比如x86架构便宜的应用容器不能运行在ARM架构的机器上。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值