容器技术入门:从理论到实践
1. 容器技术简介
容器技术在操作系统历史中有着悠久的根源,部分容器技术早在 20 世纪 70 年代就已诞生。如今,全球 50% 的组织在生产环境中以容器形式运行着一半的应用程序。为了更好地理解容器技术,我们将探讨以下问题:
- 什么是容器?
- 为什么需要容器?
- 容器从何而来?
- 容器如今在哪些地方使用?
在开始学习前,无需担心技术前提条件,即使是容器新手,这里的许多技术概念也有助于理解后续内容。若有 Linux 操作系统的相关知识,将更有助于理解本书涵盖的技术概念。
在后续的实践示例中,将使用以下约定:
- 以 $ 字符开头的 shell 命令,使用 Linux 系统的标准用户(非 root)。
- 以 # 字符开头的 shell 命令,使用 Linux 系统的 root 用户。
- 若代码块中的输出或 shell 命令过长,无法在一行显示,将用 \ 字符中断,然后继续到新行。
2. 什么是容器
在探讨容器之前,需要先了解什么是进程。根据《The Linux Programming Interface》,进程是正在执行的程序的实例,程序是包含执行进程所需信息的文件。程序可以动态链接到外部库,也可以静态链接在程序本身中(Go 编程语言默认采用这种方法)。
进程在机器的 CPU 中执行,并分配一部分内存,包含程序代码和代码使用的变量。进程在机器的用户空间中实例化,其执行由操作系统内核编排。当进程需要访问不同的机器资源(如 I/O、内存等)时,会执行系统调用进入内核空间。
进程通过文件系统间接与主