# 关于容器
容器是一种标准化的软件单元。
## 将软件打包成标准化单元,以用于开发、交付和部署。
容器镜像是轻量的、可执行的独立软件包,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于 Linux 和 Windows 的应用,在任何环境中都能够始终如一地运行。容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。
- 轻量
在一台机器上运行的多个 Docker 容器可以共享这台机器的操作系统内核;它们能够迅速启动,只需占用很少的计算和内存资源。镜像是通过文件系统层进行构造的,并共享一些公共文件。这样就能尽量降低磁盘用量,并能更快地下载镜像。
- 标准
Docker 容器基于开放式标准,能够在所有主流 Linux 版本、Microsoft Windows 以及包括 VM、裸机服务器和云在内的任何基础设施上运行。
- 安全
Docker 赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker 默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台机器。
# 容器 VS 虚拟机
容器和虚拟机具有相似的资源隔离和分配优势,但功能有所不同,因为容器虚拟化的是操作系统,而不是硬件,因此容器更容易移植,效率也更高。
![Container](https://box.kancloud.cn/6369a2c1068b8e6a5d4a75eb4f96a359_928x832.png)
容器
容器是一个应用层抽象,用于将代码和依赖资源打包在一起。多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行。与虚拟机相比,容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动。
![vm](https://box.kancloud.cn/2ba7eb530cf1040cf76c8a9fbfe253a3_928x834.png)
虚拟机
虚拟机 (VM) 是一个物理硬件层抽象,用于将一台服务器变成多台服务器。管理程序允许多个 VM 在一台机器上运行。每个 VM 都包含一整套操作系统、一个或多个应用、必要的二进制文件和库资源,因此占用大量空间。而且 VM 启动也十分缓慢。
# 容器标准和行业领先地位
2013 年,Docker 横空出世,将软件容器概念推出市场,在应用开发领域掀起了一场革命浪潮。短短数年,Docker 在应用开发、打包和管理领域引入了一套新词汇、框架和标准,给行业带来了巨大的改变和影响。
公司成立之初的核心业务是 dotCloud,致力于将 dotCloud 转变成更优秀的 Linux 容器技术 - 一种可移植、易部署的灵活技术。Docker 后来将 libcontainer 开源,联手世界各地的贡献者推进开发进程。仅仅两年之后,随着容器生态的逐步发展和成熟,Docker 于 2015 年 6 月将规范和运行时环境代码(现称 runC)捐赠给了开放容器计划(OCI),以帮助制定容器的标准化方法。
在取得这一次巨大进步后,Docker 乘势而上,推出 Containerd 项目。Containerd 是 Docker 引擎守护进程的核心容器运行时环境。Containerd 是一种行业标准的容器运行时环境,具备简洁、稳健和可移植特性,是更高级系统的可嵌入式组件。Docker 引擎是基于 runC 和 Containerd 构建的。该协作项目为开发人员提供了应用的移植性,推动了 OCI 进行容器标准化,促进了工具生态圈的增长,繁荣了免费的镜像市场以便社区可以分享和改造预制的应用程序。
![docker-pulls](https://box.kancloud.cn/971748ebda40ae710e862a8f27e402c0_944x557.png)
Containerd 是一种行业标准的容器运行时环境,具备简洁、稳健和可移植特性。它可以用作 Linux 和 Windows 的守护进程,负责管理主机系统整个容器生命周期的方方面面:镜像传输和存储、容器执行和监控、底层存储和网络连接。