系统管理员必读的容器入门指南

来源 :计算机与网络 | 被引量 : 0次 | 上传用户:yuanshangsen
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  “容器”无疑是近年IT业界的buzzword,不过,在不同语境下,它对不同的人有不同的含义。在本文中,将从Linux容器、容器镜像和写时复制等方面来阐释容器的具体含义。
  Linux容器
  传统意义上的Linux容器实际上只是Linux系统上的普通进程。这些进程组使用资源约束(cgroups)、Linux安全约束(Unix权限、功能、SELinux、AppArmor和seccomp等)和命名空间(PID、网络和挂载等)与其他进程组隔离开来。
  如果启动一个Linux系统并且查看使用cat /proc/PID/ cgroup的任意进程,将看到在cgroup中的某一进程。如果查看/proc/PID/status,则会看到其功能。如果查看/ proc / self / attr / current,将会获取SELinux标签们。如果查看/proc/PID/ns,会在其中看到一系列命名空间的进程。
  所以,如果将容器定义为具有资源限制、Linux安全约束以及命名空间的进程,那么根据这一定义,Linux系统上的每个进程都运行在容器中。这就是为什么有人说“Linux即容器,容器即Linux”。而容器运行时则是修改这些资源限制、安全约束以及命名空间,并且可以启动容器的程序。
  容器镜像
  Docker引入了容器镜像的概念,这是一个标准的TAR文件,它包含了:
  容器根文件系統(rootfs):在操作系统上带有根目录(/)标识的目录,例如:/usr,/var,/home等。
  JSON文件(容器配置):JSON文件会规定如何运行rootfs,例如:当容器启动时应该在rootfs中运行什么指令或entrypoint,应该为容器设置什么样的环境变量,容器的工作目录是什么等。
  Docker基础镜像由根文件系统和JSON文件组成,可以通过在基础镜像的根文件系统中安装所需的内容,以更新JSON文件,并且新建一个镜像层,通过这种方式可以制作一个新的镜像。
  容器镜像的定义最终由Open Container Initiative(OCI)标准化为OCI镜像规范。
  用于构建容器镜像的工具被称为容器镜像构建器(如Dockerfile),有时容器引擎也能够完成构建容器镜像的工作,当然也可以使用一些可以构建容器镜像的独立工具。
  Docker获取了这些容器镜像(tarballs)然后将他们上传到一个Web服务中,可以从中拉取他们。然后Docker会开发一个协议以便顺利拉取这些镜像,而这一Web服务便被称为容器镜像仓库。
  容器引擎可以从容器镜像仓库中拉取镜像,然后将其重组到容器存储上。此外,容器引擎也能启动容器运行。
  Copy On Write
  容器存储通常是一个写时复制(COW)分层文件系统。当从镜像仓库中拉取一个镜像时,首先,要从镜像中提取rootfs并且将其放到磁盘上。如果镜像由多层组成,那么在COW文件系统中需要将下载的每一层镜像文件储存在不同的层中。COW文件系统允许每一层分开存储,这将分层镜像的共享最大化。容器引擎通常支持不同类型的容器存储,如overlay,devicemapper,btrfs,aufs,zfs等。
  容器运行时
  容器引擎将容器镜像下载到容器存储中后,它需要创建一个容器运行的配置文件。这一配置文件结合了调用程序/用户的输入以及容器镜像规范的内容。举个例子,调用程序可能想对正在运行的容器进行指定的安全性修改、添加环境变量或者将volumes挂载到容器上,这都是调用程序输入的内容。
  容器运行时配置和分解的rootfs同样也被OCI标准化为OCI运行时规范。
  最后,容器引擎启动读取运行时规范的容器运行时,修改Linux cgroup、Linux安全约束以及命名空间,并且启动容器命令以创建PID1(Process ID1)。此时,容器引擎可以将stdin / stdout传回调用程序并控制容器(如,停止、启动和附加等)。
  请注意,许多新的容器运行时在让Linux的不同部分来隔离容器。人们先可以使用KVM分离(如迷你虚拟机)运行容器,或者可以使用其他hypervisor策略(例如,拦截容器进程中的所有系统调用)。既然我们已经拥有一个标准的运行时规范,那么就能够通过相同的容器引擎启动这些工具。甚至Windows也可以使用OCI运行时规范来启动Windows容器。
  容器编排引擎
  容器编排引擎,相比其他容器工具而言,则处于更高的级别。容器编排是用于协调多个不同节点上的容器执行工具。容器编排引擎可以通过与容器引擎通信以管理容器,如启动容器并且将其网络连接在一起。它还能够监控容器以及在负载增加时启动其他容器。
  Kubernetes是目前使用最为广泛的容器编排引擎,被大量的中小型企业用户用于开发或生产环境,并且已经成为业界公认的容器编排管理的标准框架。但是原生的Kubernetes因其学习曲线陡峭对于大多数开发人员而言很难直接上手使用。Rancher作为一个开源的企业级Kubernetes容器管理平台,其简洁直观的界面风格和操作体验可以极大程度地解决这一问题。并且Rancher实现了Kubernetes集群在混合云+本地数据中心的集中部署与管理,能统一纳管位于不同基础架构上的Kubernetes集群。此外,Rancher也将用户的安全问题放在首位。Kubernetes于8月6日发布新的补丁版本之后,Rancher反应迅速,在1天之后发布了全新版本Rancher 2.2.7,修复了CVE并支持Kubernetes新版本。
其他文献
采用了镀覆金属法制备了新型功能材料——泡沫铝,详细地介绍了镀液的配方及工艺参数,并得出最佳的工艺参数.
论述了利用COM组件技术解决网络数据传输中两个难题,对异构数据库的数据访问操作以保证数据传输具有安全性,可靠性和实时性,通过COM组件技术对数据库操作进行封装,从而实现对异构
对圆柱分度凸轮机构从理论分析,CAD,凸轮加工实践等都做了较系统的探讨,所设计的软件适用于不同类型,不同旋向,不同转向,不同滚子型的圆柱凸轮的设计,同时在,微机上输入所需的参数后,就可
赣西北客家是客家人在江西的主要聚居地之一,自明清入迁以来,其民俗文化有了较多的发展。从语言使用现象来看,客家话在赣西北客家后裔心中仍有较强的向心力,双方言现象是赣西
最近,腾讯推出了一款全新的捏脸APP《卡噗》,让用户可以通过捏脸换装来打造一个虚拟卡通形象,还能DIY出虚拟形象的梦想小窝。可以自行定制形象这点,不禁让人想起了凉凉已久的
应用一类连续可导的Lyapunov函数,提出了带部分非线性状态的动态系统,在平衡点xe=0为全局渐近稳定的充分条件,并利用Lyapunov函数的二乘形式,得到了判别系统稳定的充分必要条件。
<正>~~
期刊
从理论上分析了应力场的产生及其变化情况以及应力场的变化对锯切力的影响,得出了锯切力随着应力场的增大而逐渐减小的结论,并通过实验验证了此结论的正确性.
叙述了数据结构课件的开发思想及设计过程.该软件可用于数据结构的课堂教学及自学辅导.
1986年版《欧阳修全集》中的作品多数都是公文,占作品总数比例最高。公文写作成了欧阳修文章事业的重要组成部分。欧阳修继承性地发展了韩愈的"文以载道"的公文思想,提出"文以明