容器技术简介
软件应用通常依赖于运行时环境提供的其他库、配置文件或服务。
容器是由一个或多个与系统其余部分隔离的进程组成的集合。
容器的内容与其他容器的内容隔离,因此互不影响。软件容器是打包应用以简化部署和管理的一种方式。
容器和虚拟机对比
容器提供许多与虚拟机相同的益处,如安全、存储和网络隔离等。
这两种技术都将其应用库和运行时资源与主机操作系统或虚拟机监控程序隔离。
容器和虚拟机在硬件和底层操作系统交互方式不同
虚拟化:
使多个操作系统能够在一个硬件平台上运行
使用虚拟机监控程序将硬件分为多个虚拟硬件系统,从而允许多个操作系统并行运行。
需要一个完整的操作系统环境来支持该应用
容器:
a.直接在操作系统上运行,跨系统上所有资源共享硬件和操作系统资源。保持轻巧快速并行运行。
b.共享相同的操作系统内核,将容器化应用进程与系统其余经常隔离,使用与该内核兼容的软件
c.需要的硬件资源比虚拟机少,能够快速启动和停止并降低存储要求。
容器实施
红帽企业Linux使用核心技术实施容器:
用于资源管理的控制组(cgroup)
用于进程隔离的命名空间
加强安全边界的SELinux和Seccomp(安全计算模式)
容器是提供托管应用的可重用性和可移植性的有效途径。
容器通常具有临时性。
容器从容器镜像运行。容器镜像作为创建容器的蓝图。
容器镜像不可更改或不可变,包括运行容器所需的所有代码和依赖项的文件。
使用Podman管理容器
podman : 直接管理容器和容器镜像。
skopeo : 可用于检查、复制、删除和签署镜像。
buildah : 可用于创建新的容器镜像。
这些工具与开放容器项目(OCI)兼容,可用于管理由OCI兼容的容器引擎。
运行rootless容器
在容器主机上,可以以root用户或普通非特权用户身份院校容器,由非特权用户运行的容器称为rootless容器。
rootless容器更安全,但存在一些限制,无法通过容器主机的特权端口发布网络服务。