LXC是什么
LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术
LXC 使用下列内核功能来控制进程:
- 内核名字空间(进程间通信、uts、mount、pid、network 和 user)
- AppArmor 和 SELinux 配置
- Seccomp 策略
- chroot(使用 pivot_root)
- Kernel Capibilities
- 控制组(cgroups)
因此,LXC 通常被认为介于“加强版”的 chroot 和完全成熟的虚拟机之间的技术。LXC 的目标是创建一个尽可能与标准安装的 Linux 相同但又不需要分离内核的环境
搭建LXC
yum -y install epel-release
yum -y install lxc lxc-templates bridge-utils lxc-libs libcgroup libvirt
lxc #主程序包
lxc-templates #lxc的配置模板
bridge-utils #网桥管理工具
lxc-libs #lxc所需的库文件
libcgroup #cgroup是为Linux内核提供任务聚集和划分的机制,通过一组参数集合将一些任务组织成一个或多个子系统。
libvirt #管理Linux的虚拟化功能所需的服务器端守护程序。 需要针对特定驱动程序的管理程序。
注:如果要创建debian系列的主机需要再安装一个软件包:debootstrap
[root@localhost ~]
[root@localhost ~]
● lxc.service - LXC Container Initialization and Autoboot Code
Loaded: loaded (/usr/lib/systemd/system/lxc.service; disabled; vendor preset>
Active: active (exited) since Tue 2021-11-30 06:09:20 EST; 10s ago
Docs: man:lxc-autostart
man:lxc
Process: 34885 ExecStart=/usr/libexec/lxc/lxc-containers start (code=exited, >
Process: 34877 ExecStartPre=/usr/libexec/lxc/lxc-apparmor-load (code=exited, >
Main PID: 34885 (code=exited, status=0/SUCCESS)
11月 30 06:09:20 localhost.localdomain systemd[1]: Starting LXC Container Initi>
11月 30 06:09:20 localhost.localdomain systemd[1]: Started LXC Container Initia>
[root@localhost ~]
[root@localhost ~]
Kernel configuration not found at /proc/config.gz; searching...
Kernel configuration found at /boot/config-4.18.0-257.el8.x86_64
--- Namespaces ---
Namespaces: enabled
Utsname namespace: enabled
Ipc namespace: enabled
Pid namespace: enabled
User namespace: enabled
Warning: newuidmap is not setuid-root
Warning: newgidmap is not setuid-root
Network namespace: enabled
--- Control groups ---
Cgroups: enabled
Cgroup v1 mount points:
/sys/fs/cgroup/systemd
/sys/fs/cgroup/rdma
/sys/fs/cgroup/net_cls,net_prio
/sys/fs/cgroup/blkio
创建一台虚拟机
默认是把lxc相关的命令拷贝到了/usr/local/bin,如果你没有把/usr/local/bin加入到PATH,你使用lxc命令时,系统会说找不到命令
[root@localhost ~]
iexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH=$PATH:/usr/local/bin
第一次执行时,它会说配置目录找不到/usr/local/var/lib/lxc,所以需要建立这个目录
[root@localhost ~]
[root@localhost ~]
lxc-busybox lxc-download lxc-local lxc-oci
lxc-create -t busybox -n myhost1
容器是什么(什么是docker)
容器是一种基础工具;泛指任何可以用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳、储存、运输物品;物体可以被放置在容器中,而容器则可以保护内容物;
人类使用容器的历史至少有十万年,甚至可能有数百万年的历史;
容器的类型
瓶 - 指口部比腹部窄小、颈长的容器
罐 - 指那些开口较大、一般为近圆筒形的器皿
箱 - 通常是立方体或圆柱体。形状固定
篮 - 以条状物编织而成
桶 - 一种圆柱形的容器
袋 - 柔性材料制成的容器,形状会受内容物而变化
瓮 - 通常是指陶制,口小肚大的容器
碗 - 用来盛载食物的容器
柜 - 指一个由盒组成的家具
鞘 - 用于装载刀刃的容器
传统虚拟机与容器的区别
简单来说,传统虚拟化技术如vSphere或Hyper-V是以操作系统为中心,而Container技术则是一种以应用程序为中心的虚拟化技术。
传统虚拟化技术从操作系统层下手,目标是建立一个可以用来执行整套操作系统的沙盒独立执行环境,习惯以虚拟机(Virtual Machine)来称呼。Container技术则是直接将一个应用程序所需的相关程序代码、函式库、环境配置文件都打包起来建立沙盒执行环境,Container技术产生的环境就称为Container。
两者具体区别
???????虚拟机需要安装操作系统(安装Guest OS)才能执行应用程序,而Container内不需要安装操作系统就能执行应用程序 Container技术不是在OS外来建立虚拟环境,而是在OS内的核心系统层来打造虚拟执行环境,透过共享Host OS的作法,取代一个一个Guest OS的功用。Container也因此被称为是OS层的虚拟化技术。
Container是轻量级虚拟化技术
???????Container技术采取共享Host OS的作法,而不需在每一个Container内执行Guest OS,因此建立Container不需要等待操作系统开机时间,不用1分钟或几秒钟就可以启用,远比需要数分钟甚至数十分钟才能开启的传统虚拟机来的快。
虚拟化分为以下两类:
容器分离开的资源:
- UTS(主机名与域名)
- Mount(文件系统挂载树)
- IPC
- PID进程树
- User
- Network(tcp/ip协议栈)
开发/运维(Devops)
一次构建,随处运行
- 更快速的应用交付和部署
- 更敏捷的升级和扩缩容
- 更简单的系统运维
- 更高效的计算资源利用
|