栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker和LXC简介

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker和LXC简介

LXC是什么

LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术

LXC 使用下列内核功能来控制进程:

  • 内核名字空间(进程间通信、uts、mount、pid、network 和 user)
  • AppArmor 和 SELinux 配置
  • Seccomp 策略
  • chroot(使用 pivot_root)
  • Kernel Capibilities
  • 控制组(cgroups)

因此,LXC 通常被认为介于“加强版”的 chroot 和完全成熟的虚拟机之间的技术。LXC 的目标是创建一个尽可能与标准安装的 Linux 相同但又不需要分离内核的环境

搭建LXC
#LXC的安装包在CentOS的epel源有提供的,使用官网的epel源需要安装一个软件包
yum -y install epel-release        #这个软件包里包含epelyum源和GPG的配置

#安装LXC软件包和依赖包
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 ~]# systemctl start lxc     启动服务
[root@localhost ~]# systemctl status lxc     #查看服务状态,如果Active后面显示为active (exited)表示服务已启动,显示为inactive (dead)服务未启动。
● 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 ~]# systemctl start libvirtd     #启动虚拟网络
[root@localhost ~]# lxc-checkconfig     #检查配置
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命令时,系统会说找不到命令
#在主目录下的.bash_profile中将/usr/local/bin加入到PATH中
[root@localhost ~]# vi /etc/profile

iexport PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTConTROL
export PATH=$PATH:/usr/local/bin

第一次执行时,它会说配置目录找不到/usr/local/var/lib/lxc,所以需要建立这个目录
#创建/usr/local/var/lib/lxc
[root@localhost ~]# mkdir -p /usr/local/var/lib/lxc


#查看当前系统中可用的LXC模板容器
[root@localhost ~]# ls /usr/share/lxc/templates/
lxc-busybox  lxc-download  lxc-local  lxc-oci

lxc-create -t busybox -n myhost1         #创建LXC主机,-t 指定模板容器,-n 指定要创建的主机名
容器是什么(什么是docker)

容器是一种基础工具;泛指任何可以用于容纳其他物品的工具,可以部分或完全封闭,被用于容纳、储存、运输物品;物体可以被放置在容器中,而容器则可以保护内容物;

人类使用容器的历史至少有十万年,甚至可能有数百万年的历史;

容器的类型
瓶 - 指口部比腹部窄小、颈长的容器
罐 - 指那些开口较大、一般为近圆筒形的器皿
箱 - 通常是立方体或圆柱体。形状固定
篮 - 以条状物编织而成
桶 - 一种圆柱形的容器
袋 - 柔性材料制成的容器,形状会受内容物而变化
瓮 - 通常是指陶制,口小肚大的容器
碗 - 用来盛载食物的容器
柜 - 指一个由盒组成的家具
鞘 - 用于装载刀刃的容器
传统虚拟机与容器的区别

  • Container技术和服务器虚拟化并不是一样的技术:

    两者虽然都属于虚拟化的技术,目标都是为了将一套应用程序所需的执行环境打包起来,建立一个孤立环境,方便在不同的硬件中移动,但两者的运作思维截然不同。

简单来说,传统虚拟化技术如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) 一次构建,随处运行
  • 更快速的应用交付和部署
  • 更敏捷的升级和扩缩容
  • 更简单的系统运维
  • 更高效的计算资源利用
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641979.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号