系统管理员的容器指南(你需要知道容器如何使用)

本文深入解析容器技术,探讨其在Linux系统中的实现原理,包括资源隔离、安全控制及命名空间特性。介绍了容器镜像概念、构建工具、存储机制以及容器运行时规范,展示了容器技术在现代IT基础设施中的核心作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文地址:https://opensource.com/article/18/8/sysadmins-guide-containers

原文作者: Daniel J Walsh (Red Hat) 

       专业术语“容器”被人们过度的使用,因此,根据不同的情景,它可能有不同的意思。

      传统的Linux容器真的只是Linux系统中的普通的进程。这些进程组之间是通过资源隔离(control group [Cgroup])、Linux安全隔离(Unix permissions, capabilities, SELinux, AppArmor, seccomp, etc.)以及命名空间隔离(PID, network, mount, etc.)。

      如果你启动一个linux系统并且能通过命令 cat /proc/PID/cgroup 查看任何一个进程的资源隔离情况,你可以给通过 cat /proc/PID/status来查看进程占用资源情况;通过查看  /proc/self/attr/current 查看SElinux标签;查看/proc/PID/ns,能看到进程的一系列的命名空间。因此,如果你把容器定义为具有资源隔离(resource constraints)、Linux安全隔离(Linux security constraints)和一系列命名空间特性的进程。那么根据定义,在Linux系统中每个进程都是一个容器。这是为什么我们经常说Linux是容器,容器是Linux。Container runtimes是一种修改资源限制、安全策略、命名空间以及启动容器的一种工具。

dockery引进了容器镜像的概念,这是一个标准的TAR文件,它结合了:

  • Rootfs(容器根文件系统):容器系统上目录看起来就像操作系统的标准根文件系统。例如:/usr、/var、/home等目录。
  • JSON文件(container configuration):指定如何运行rootfs;例如,当容器启动时,在文件系统中指定运行的命令或者进入点;给容器设置容器的环境变量、工作目录以及其他的设置。

        Docker "打包 启动" rootfs和JSON文件来创建基础镜像。这使你能在rootfs系统上安装额外的东西。通过更新JSON文件在基础镜像和新的镜像之间创建出不同,这创建了一个层状的镜像。

       docker中镜像的定义最终由开放容器(OCI)标准机构作为OCI镜像规范。

      用来构建容器镜像工具叫容器镜像构建器,有时候容器引擎执行这个任务,但几个独立工具可以用来创建容器镜像。

      Docker构建这些镜像(tarballs)并且移动镜像到web服务,进而这些镜像能通过一些协议拉取它们,这些web服务被称作容器注册表。

      容器引擎(Container engines)能从容器注册表中拉取镜像并且重新打包它们上传到容器仓库中,容器引擎也能启动container runtimes (see below)。

容器存储通常采用的是写时复制(COW)分层系统.。当从容器注册表中下载容器镜像时,首先需要解压这个根文件系统放到磁盘中。如果你的镜像有多个层,每个层是下载并且存储在COW文件系统中不同的层中。这个COW文件系统允许每个层分开存储,从而实现了最大化共享镜像层。容器引擎支持多种容器存储驱动,包括 overlay类型,devicemapper类型,btrfs类型,aufs类型,autf类型以及zfs类型。

      在容器引擎下载镜像到容器存储之后,它需要创建一个container runtime 配置文件。这个 runtime 配置结合调用者的输入以及容器镜像的配置。例如,这个调用者可能修改运行容器的安全策略,增加额外的环境变量,或者给容器挂载存储卷。

      OCI标准组织还将容器运行时配置和根文件系统的格式标准化为OCI运行规范。

      最后,容器引擎启动一个容器 runtime 来加载容器运行规范;修改Linux 的资源控制,Linux安全控制以及命名空间;同时启动容器命令来创建容器的PID 1。同时,容器引擎能把 标准输入/标准输出返回给调用者以及控制容器(比如:停止,启动,进入)。

      注意,正在引入许多新的容器运行时以使用Linux的不同部分来隔离容器。人们现在可以使用KVM分离(比如迷你虚拟机)运行容器,或者他们可以使用其他管理程序策略(例如拦截来自容器中进程的所有系统调用)。由于我们有一个标准的运行时规范,这些工具都可以由相同的容器引擎启动。甚至Windows也可以使用OCI运行时规范来启动Windows容器。

      更高水平的是容器调度器。容器调度工具是调度执行不同的容器在不同的机器上。容器调度器与容器引擎通信来管理容器,调度器告诉容器引擎去启动容器并且把它们的网络连接在一起。调度器能监控容器并且在负载增加时,启动容器。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值