深入理解容器场景与 Docker 概述
1. 容器解码
容器化是虚拟机的一种替代方案,它将应用程序封装起来,并为其提供独立的运行环境。容器的基础是 Linux 容器(LXC),它是 Linux 内核隔离功能的用户空间接口。借助强大的 API 和简单的工具,Linux 用户可以创建和管理应用程序容器。LXC 容器介于 chroot 和成熟的虚拟机之间。与传统的虚拟机管理程序不同,容器共享运行主机操作系统的 Linux 内核,因此同一台机器上运行的多个容器使用相同的 Linux 内核,这使得容器具有快速、几乎零性能开销的优势。
容器的主要用例包括:
- OS 容器 :可以将其想象成虚拟机,但与虚拟机不同的是,它们共享主机操作系统的内核,但提供用户空间隔离。可以为容器分配专用资源,并像在任何虚拟机上一样安装、配置和运行不同的应用程序、库等。在可扩展性测试中,OS 容器很有用,因为可以轻松部署一组不同发行版的容器,这比部署虚拟机成本低得多。容器由模板或镜像创建,这些模板或镜像决定了容器的结构和内容,这使得可以在所有容器中创建具有相同环境、相同包版本和配置的容器,常用于开发环境设置。适用于 OS 容器的技术有 LXC、OpenVZ、Docker 和 BSD jails 等。
- 应用程序容器 :设计用于在包中运行单个服务,而前面提到的 OS 容器可以支持多个进程。Docker 和 Rocket 推出后,应用程序容器受到了广泛关注。每次启动容器时,它只运行一个进程。容器通常采用分层方法,如 Docker 容器,这有助于减少重复并增加重用。可以从所有组件共有的基础镜像开始启动容器,然后在文件系统中添加特定于组件的层。分