Linux Container 简介
Linux Container
(容器)是与系统其他部分隔离开的一系列进程。运行这些进程所需的所有文件都由另一个镜像提供,这意味着从开发到测试再到生产的整个过程中,Linux 容器都具有可移植性和一致性。因而,相对于依赖重复传统测试环境的开发渠道,容器的运行速度要快得多。容器比较普遍也易于使用,因此也成了 IT 安全方面的重要组成部分。
容器可以确保您的应用拥有必需的库、依赖项和文件,让您可以在生产中自如地迁移这些应用,无需担心会出现任何负面影响。实际上,您可以将容器镜像中的内容,视为 Linux 发行版的一个安装实例,因为其中完整包含 RPM 软件包、配置文件等内容。但是,安装容器镜像发行版,要比安装新的操作系统副本容易得多。这样可以避免危机,做到皆大欢喜。
在需要很高的可移植性、可配置性和隔离的情况下,我们可以通过不同的方式,利用 Linux 容器解决难题。
Linux 容器的价值在于,它能加速开发并满足新出现的业务需求,当然,选择正确的容器平台也同样重要。
容器与虚拟化的关联
容器就是虚拟化吗?如何区分容器与虚拟化?
回答是:不完全如此。更确切的说法应该是:两者为互补关系。
我们用一种简单方式来思考一下:
- 虚拟化使得您的操作系统(Windows 或 Linux)可同时在单个硬件系统上运行。
- 容器则可共享同一个操作系统内核,将应用进程与系统其他部分隔离开。
例如:
ARM Linux
系统运行ARM Linux
容器;x86 Linux
系统运行x86 Linux
容器;x86 Windows
系统运行x86 Windows
容器;
Linux 容器具有极佳的可移植性,但前提是它们必须与底层系统兼容。
Linux Container 意味着什么?
虚拟化会使用虚拟机监控程序模拟硬件,从而使多个操作系统能够并行运行。但这不如容器轻便。事实上,在仅拥有容量有限的有限资源时,您需要能够可以进行密集部署的轻量级应用。Linux 容器在本机操作系统上运行,与所有容器共享该操作系统,因此应用和服务能够保持轻巧,并行化快速运行。
Linux Container 是我们开发、部署和管理应用方式的又一次飞跃。
- Linux 容器镜像提供了可移植性和版本控制,确保能够在开发人员的笔记本电脑上运行的应用,同样也能在生产环境中正常运行。
- 相较于虚拟机,Linux 容器在运行时所占用的资源更少,使用的是标准接口(启动、停止、环境变量等),并会与应用隔离开;
- 此外,作为(包含多个容器)大型应用的一部分时更加易于管理,而且这些多容器应用可以跨多个云环境进行编排。
什么是 LXC?
- Infrastructure for container projects,容器项目即基础设施。
作为一个开源容器平台,Linux
容器项目(LXC
)提供了一组工具、模板、库和语言绑定。LXC
采用简单的命令行界面,可改善容器启动时的用户体验。
LXC
提供了一个操作系统级的虚拟化环境,可在许多基于 Linux
的系统上安装。在 Linux
发行版中,可能会通过其软件包存储库来提供 LXC
。
Docker 简介
Docker
是一个开源的应用容器引擎,属于 Linux
容器的一种封装,Docker
提供简单易用的容器使用接口,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux
机器上。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker
是目前最流行的 Linux
容器解决方案,即使 Docker
是目前管理 Linux
容器的一个非常方便的工具,但它也有两个缺点:
Docker
需要在你的系统上运行一个守护进程。Docker
是以root
身份在你的系统上运行该守护程序。
这些缺点的存在可能有一定的安全隐患,为了解决这些问题,下一代容器化工具 Podman
出现了 。
Podman 介绍
什么是 Podman
?
podman(Pod Manager)是一个由 RedHat 公司推出的容器管理工具,它的定位就是 docker 的替代品,在使用上与docker的体验类似。 podman 源于 CRI-O 项目,可以直接访问 OCI 的实现(如 runC),流程比 docker 要短。 二者主要的区别在于,podman 是一个开源的产品;而 docker 已经是商业化的产品。
简而言之:alias docker = podman
Podman
是一个开源的容器管理工具,其可在大多数 Linux
平台上使用,它是一种无守护程序的容器引擎,用于在 Linux
系统上开发,管理和运行任何符合 Open Container Initiative(OCI)
标准的容器和容器镜像,提供了一个与 Docker
兼容的命令行前端,该前端可以简单地为 Docker CLI
别名,即 “alias docker = podman”
。Podman
控制下的容器既可以由 root
用户运行,也可以由非特权用户运行,这个是 Podman
与 Docker
最大的差别之一。
关于 Podman 更多信息:
- Podman 官网地址:https://podman.io/
- Podman 项目地址:https://github.com/containers/podman
Docker 与 Podman 的区别
用一张图形象直观的对比,结构如下:
后续内容:
- 容器由 Root 运行与非 Root 用户运行的区别;
- Podman 的安装;
- Podman 的基本使用;
参考: