Module 01 · Containers and Containerization
Introduction to Containers容器入门课程
🎉 欢迎来到《容器简介》课程!
通过观看本视频,您将能够:
- 识别软件开发中的传统计算问题
- 定义容器并描述其特点
- 列出容器的优点与挑战,以及流行的容器供应商
云原生与容器技术
云原生是构建可扩展、动态且适应混合云的软件的最新应用开发方法,而容器技术则是这一方法中的强大组成部分。
集装箱的类比
我们可以通过集装箱来类比容器技术。现代航运行业标准化了集装箱的尺寸,无论运输什么物品,集装箱的尺寸都保持一致。这种标准化显著提高了运输效率。
物流人员根据集装箱的尺寸和客户的交付需求,选择船只、飞机、火车或卡车等不同的运输方式。
数字容器技术也有相似之处。容器解决了让软件可移植的问题,使得应用程序能够在多个平台上运行。
由容器化引擎驱动的容器,是一种标准的软件单元,封装了应用程序代码、运行时、系统工具、系统库和开发人员所需的设置,使得开发人员能够高效地构建、运输和运行应用程序。
操作和基础设施问题不再是障碍,您可以快速地将应用程序从笔记本电脑迁移到测试环境,从预生产环境迁移到生产环境,从物理机器迁移到虚拟机,或是从私有云迁移到公有云,并且始终可以确保应用程序的正常运行。
容器的优势
容器的大小可能只有几兆字节,开发人员几乎可以立即启动容器化应用程序。凭借这些能力,容器成为了当今开发和部署解决方案标准的基础。
传统计算环境的挑战
在传统的计算环境中,开发人员无法为应用程序在物理服务器上隔离并分配特定的存储和内存资源。
- 服务器往往得不到充分利用或过度使用,导致资源利用率低,投资回报率差。
- 传统部署需要全面的资源配置和昂贵的维护成本。
- 物理服务器的限制可能会在高负载时限制应用程序的性能。
- 应用程序在多个环境和操作系统之间不可移植。
- 实现硬件的可恢复性通常既耗时又复杂,成本高昂。
- 传统本地IT环境具有有限的可扩展性。
- 使用传统环境将软件分发到多个平台和资源时,自动化也存在很大挑战。

容器解决方案
容器帮助组织克服这些挑战。
容器引擎虚拟化操作系统,并负责运行容器。平台独立的容器轻便、快速、隔离、可移植且安全,通常占用更少的内存空间。
容器中的二进制文件、库和其他实体帮助应用程序运行,一台机器可以托管多个容器。
容器帮助开发人员快速将代码部署到应用程序中。
容器的特性
- 容器平台独立,可以在云、桌面和本地环境中运行。
- 容器具有操作系统独立性,可以在 Windows、Linux 或 Mac OS 上运行。
- 容器还具备编程语言和集成开发环境(IDE)独立性——无论您运行的是 Python、Node、Java 等语言。

容器的优势
- 快速创建应用程序,使用自动化流程。
- 降低部署时间和成本。
- 提高资源利用率,包括 CPU 和内存。
- 支持跨环境移植。
- 支持下一代应用程序,包括微服务架构。
容器化的挑战
使用容器化技术并非没有挑战。
- 服务器的安全性可能会成为问题,尤其是在操作系统受影响时。
- 管理数以千计的容器可能让开发人员感到不堪重负。
- 转换单体的传统应用程序可能是一个复杂的过程。
- 开发人员可能会遇到容器的尺寸调整困难,难以根据特定场景进行合适的配置。
流行的容器供应商
让我们了解一些流行的容器供应商:
- Docker 是一个强大的平台,也是目前最流行的容器平台。
- Podman 是一个无守护进程的容器引擎,比 Docker 更加安全。
- LXC 更适合用于数据密集型应用和操作。
- Vagrant 提供了在运行的物理机器上最高水平的隔离。
总结
在本视频中,您学到了以下内容:
- 组织正在采用容器技术,以克服隔离、利用率、资源配置、性能等方面的挑战。
- 容器是一个标准的软件单元,封装了构建、运输和运行应用程序所需的一切。
- 容器具有操作系统、编程语言和平台的独立性。
- 容器技术降低了部署时间和成本,提高了资源利用率,自动化了流程,并支持下一代应用程序(如微服务)。
- 开发人员可能会遇到管理、迁移遗留项目和调整容器尺寸等重大挑战。
- 主要的容器供应商包括 Docker、Podman、LXC 和 Vagrant。
通过这一系列内容,您将对容器技术有更深的理解,并为实践应用打下基础。