Linux中容器技术的原理是什么

介绍

今天就跟大家聊聊有关Linux中容器技术的原理是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

<强> 1.1隔离和共享

在一个多员共用的开发环境或者一台服务器运行多个逻辑隔离的服务器进程。谁的运行环境也不希望影响到另一个谁。也就是一个物理机器需要虚拟化出多个环境或者容器。通过提供一种创建和进入容器的方式,操作系统让应用程序就像在独立的机器上运行一样,但又能共享很多底层的资源。

<强> 1.2虚拟化vs容器

传统的虚拟化技术是通过硬件模拟或者操作系统软件实现,而容器技术可以比传统虚拟化更轻量级。

容器在提供隔离的同时,还通过共享这些资源节省开销,这意味着容器比真正的虚拟化的开销要小得多,例如,可以有效地共享公共文件(比如glibc)的页缓存,因为所有容器都使用相同的内核,而且所有容器还常常共享相同的libc库(取决于容器配置)。这种共享常常可以扩展到目录中其他不需要写入内容的文件。

和传统虚拟化相比,容器启动很快,由于共享系统资源,一台主机可以运行上千个容器,并且容器镜像用类似git分发思想,用户更容易创建,分发,更新存储这些镜像。

<强> 1.3前世和今生

今生是码头工人大流行的时代,而前世就是早于1982年的chroot工具,以及后面经过改进并且现在还在使用的lxc技术。早期的码头工人的代码实现基于lxc(0.9之前)。

Linux容器功能是基于cgroups和名称空间来实现的。所以要了解Linux容器必须先了解cgroup和名称空间。

<强> 2.1,并且(控制组)

并且是将进程分组管理的内核功能。通过并且可以隔离进程,同时还可以控制进程的资源占用(CPU、内存等等)情况在操作系统底层限制物理资源,起到容器的作用。进程可用的CPU资源由cpuset指定。

<强> 2.2,名称空间(命名空间)

名称空间让每个进程组有独立的PID, IPC和网络空间。名称空间通过克隆系统调用来实现的。

克隆系统调用的第3个参数旗帜就是通过设置名称空间来划分资源的。

LXC依赖于epel-release的安装,EPEL(Extra Packages for Enterprise Linux)是Fedora 社区打造提供高质量软件包的项目,相当于一个第三方源。

yum install epel-release -y

然后再安装LXC相关的工具包,和创建容器所需要的模板lxc-templates

yum install lxc lxc-templates -y

安装完使用lxc-checkconfig检查下操作系统对容器技术的支持

Linux中容器技术的原理是什么

3.1 LXC工具包概览

LXC所有的操作工具api都在这里,可以对LXC进行相应的操作。

Linux中容器技术的原理是什么

3.2 创建一个容器

使用预定义的模板创建一个容器。它会根据模板设置自动下载依赖环境包并安装。

lxc-create -n 容器名称 -t 模板(不需要加 lxc)  lxc-create -n mariolu-console -t centos

模板就是第3节安装的lxc-templates工具包。所有模板放在这个目录下/usr/share/lxc/templates/

Linux中容器技术的原理是什么

跟chroot思想一样,安装完容器,所有的主机文件夹根目录被重定义到/var/lib/lxc/mariolu-console

Linux中容器技术的原理是什么

3.3 启动容器

就像安装完机器后,我们要开机启动服务器。Lxc也有相应的步骤就是

lxc-start -n mariolu-console

Linux中容器技术的原理是什么

但是我们很快就发现,启动需要密码,但是使用容器创建没有输入密码,难道是有什么默认密码吗

Linux中容器技术的原理是什么

在这里并不能看到root密码,密码或者被用x字符替代,或者是一串hash码。

cat /var/lib/lxc/mariolu-console/rootfs/etc/shadow  chroot /var/lib/lxc/mariolu-console/rootfs passwd

网络搜索没找到默认密码,但是找到了这么一句话:

Linux中容器技术的原理是什么