容器

容器和虚拟机的区别

1.容器技术简介

对于容器,它首先是一个相对独立的运行环境,在这一点有点类似于虚拟机,但是不像虚拟机那样彻底。在容器内,应该最小化其对外界的影响,比如不能在容器内把宿主机上的资源全部消耗,这就是资源控制。

容器可以看成一个装好了一组特定应用的虚拟机,它直接利用了宿主机的内核,抽象层比虚拟机更少,更加轻量化,启动速度极快。可以做到秒级,甚至毫秒级启动

容器也是虚拟化,但是属于“轻量级”的虚拟化。它的目的和虚拟机一样,都是为了创造“隔离环境”。

但是,它又和虚拟机有很大的不同——虚拟机是操作系统级别的资源隔离,而容器本质上是进程级的资源隔离。

因为两者有不同的使用场景。虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。
而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。

在这里插入图片描述

docker优势

Docker 镜像要采用这种分层结构 - 共享资源。

比如:有多个镜像都从相同的 base 镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,同时内存中也只需加载一份 base 镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

  • 更高效的利用系统资源
    由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高.

  • 调试能力
    Docker提供了很多的工具, 这些工具不一定只是针对容器, 但是却适用于容器. 他们提供了很多功能, 包括可以为容器设置检查点, 设置版本, 查看两个容器之间的差别, 这些特性可以帮助调试Bug.

  • 快速部署
    Docker为进程创建一个容器, 不需要启动一个操作系统, 时间缩短为秒级别.
    可以在数据中心创建销毁资源而无须担心重新启动带来的开销. 通常数据中心的资源利用率只有30% , 通过使用Docker并进行有效的资源分配可以提高资源的利用率.

  • 镜像是有版本号的,彻底保证了环境的唯一性

  • 容器是可以共享镜像的,所以启动很多容器也不会占用很多存储空间

  • 镜像可以分层传递,所以镜像更新也不用全部重传,节省了网络传输时间

  • 可以使用Dockerfile,统一了环境构建方式

Docker特性:

*隔离性:libcontainer(默认容器)=>内核命名空间。

*安全性:内部(cgroups)| 容器和宿主主机(内核能力机制)。

*可度量性:cgroups(控制组)→资源度量和分配(用户)。

*移植性:AUFS(快速更新)→层的概念。

-----使用AUFS作为Docker容器的文件系统,提供的好处:

在这里插入图片描述

Docker优点(比较LXC):

*跨平台可移植性:按统一标准打包(镜像中),可传播。

*面向应用:优化部署应用(设计哲学)→API,接口及文档(体现)。

*版本控制:追踪、查询、记录版本信息(应用程序更改史)和回滚版本等

*组件复用:组件式搭建(基础镜像)→Python(运行环境) | postgreasql(基础镜像)。

*共享性:公共的注册服务器(可免费下载源码)。

Logo

一站式 AI 云服务平台

更多推荐