Docker是一种OS虚拟化技术,是一个开源的应用容器引擎。它可以让开发者将应用打包到一个可移植的容器中,并且该容器可以运行在几乎所有linux系统中
网络、存储、进程等资源都是对于不同的容器进行隔离的,对于宿主机和容器直接也是隔离的。


Docker比虚拟机少了一层虚拟机操作系统,Docker的应用直接Docker引擎上运行。
一些基础概念
Docker提供了在松散隔离的环境(称为容器)中打包和运行应用程序的功能。 隔离和安全性使您可以在给定主机上同时运行多个容器。 容器是轻量级的,因为它们不需要管理程序的额外负载,而是直接在主机的内核中运行。这意味着与使用虚拟机相比,可以在给定的硬件组合上运行更多的容器。甚至可以在实际上是虚拟机的主机中运行Docker容器!
Docker提供了工具和平台来管理容器的生命周期:
Docker Engine是具有以下主要组件的客户端-服务器应用程序:

CLI使用Docker REST API通过脚本或直接CLI命令来控制Docker守护进程或与之交互。许多其他Docker应用程序使用底层API和CLI。 该守护进程创建并管理Docker对象,如映像、容器、网络和卷。
Docker使用一种称为名称空间的技术来提供称为容器的隔离工作区。 运行容器时,Docker会为该容器创建一组名称空间。 这些名称空间提供了一层隔离。 容器的每个方面都在单独的名称空间中运行,并且其访问仅限于该名称空间。 Docker引擎在Linux上使用以下名称空间:
Linux上的Docker引擎还依赖于另一种称为控制组(cgroups)的技术。 cgroup将应用程序限制为一组特定的资源。 控制组允许Docker Engine将可用的硬件资源共享给容器,并有选择地实施限制和约束。 例如,您可以限制特定容器可用的内存。
联合文件系统或UnionFS是通过创建图层进行操作的文件系统,使其非常轻便且快速。 Docker Engine使用UnionFS为容器提供构建模块。 Docker Engine可以使用多个UnionFS变体,包括AUFS,btrfs,vfs和DeviceMapper。
Docker Engine将名称空间,控制组和UnionFS组合到一个称为容器格式的包装器中。 默认容器格式为libcontainer。 将来,Docker可以通过与BSD Jails或Solaris Zones等技术集成来支持其他容器格式。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。