当前位置: 首页 > 科技观察

Linux容器技术原理及使用

时间:2023-03-13 12:43:59 科技观察

1.1隔离与共享在多人共享开发环境或一台服务器上运行多个逻辑隔离的服务器进程。谁的运行环境不想影响其他谁。即一台物理机需要虚拟化多个环境或容器。通过提供一种创建和进入容器的方法,操作系统让应用程序像在不同的机器上运行一样运行,但共享许多底层资源。1.2虚拟化与容器传统虚拟化技术是通过硬件模拟或操作系统软件实现的,而容器技术可以比传统虚拟化更轻量。虽然容器提供隔离,但它们还通过共享这些资源来节省开销,这意味着容器比真正的虚拟化要便宜得多。例如,glibc等通用文件的页面缓存可以有效共享,因为所有容器都使用相同的内核,而且所有容器也经常共享相同的libc库(取决于容器配置)。这种共享往往可以扩展到目录中其他不需要写入的文件。与传统虚拟化相比,容器启动速度快。由于系统资源共享,一台宿主机可以运行上千个容器,容器镜像分发思路类似于git。用户可以更轻松地创建、分发、更新和存储这些图像。1.3前世今生今世是docker大流行的时代,而前世是早于1982年的chroot工具,以及改进后仍在使用的lxc技术。早期的docker代码实现是基于LXC(0.9之前)。Linux容器功能是基于cgroups和Namespace实现的。所以要了解Linux容器,首先要了解cgroup和Namespace。2.1、cgroups(controlgroup)cgroups是一个以组为单位管理进程的内核函数。通过cgroups可以隔离进程,同时控制进程的资源占用(CPU、内存等),在操作系统底层限制物理资源,起到Container的作用。进程可用的cpu资源由cpuset指定。2.2.命名空间(namespace)命名空间允许每个进程组拥有独立的PID、IPC和网络空间。命名空间是通过克隆系统调用实现的。clone系统调用的第三个参数flags是通过设置Namespace来划分资源。LXC依赖于epel-release的安装。EPEL(ExtraPackagesforEnterpriseLinux)是Fedora社区创建的一个提供高质量软件包的项目,相当于第三方源。yuminstallel-release-y然后安装LXC相关的工具包和创建容器所需的模板lxc-templatesyuminstalllxclxc-templates-y安装完成后使用lxc-checkconfig查看操作系统对容器技术的支持情况3.1LXC工具包概述LXCall的操作工具API都在这里,你可以在LXC上进行相应的操作。3.2创建容器使用预定义的模板创建容器。会根据模板设置自动下载安装依赖环境包。lxc-create-n容器名-t模板(不用加lxc)lxc-create-nmariolu-console-tcentos模板是第3节安装的lxc-templates工具包,所有模板都放在这个目录/usr/share/lxc/templates/与chroot相同。安装容器后,所有宿主文件夹的根目录被重新定义为/var/lib/lxc/mariolu-console3.3启动容器就像安装完机器一样,我们要启动服务器。lxc也有对应的步骤,就是lxc-start-nmariolu-console,但是我们很快就发现需要密码才能启动,但是创建容器的时候却没有输入密码。有默认密码吗?看不到root密码,密码要么被x字符代替,要么是一串hash码。cat/var/lib/lxc/mariolu-console/rootfs/etc/shadowchroot/var/lib/lxc/mariolu-console/rootfspasswd网络搜索没有找到默认密码,却发现了这么一句话:Therootpasswordis设置为已过期并要求在首次登录时更改,您应该尽快更改。如果您丢失了root密码或希望在不启动容器的情况下更改它,您可以通过运行以下命令从主机更改它(这也会重置过期标志)chroot/var/lib/lxc/sspl-test/rootfspasswdYES!击个掌!这告诉我们重置密码的命令。我们打开一个新窗口,完成密码重置,然后切换回原来的窗口。这时候我们就可以愉快的使用密码登录了。