一、实战目的
通过 lxc 来完成容器的创建,体会容器,并了解 docker 并不是容器的唯一实现。自docker 0.9 版本起,docker 除了继续支持 LXC 外,还开始引入自家的 libcontainer,试图打造更通用的底层容器虚拟化库。如今的 docker 基本上都已经是使用libcontainer 而非 LXC 了
二、LXC常见命令
1. lxc-checkconfig
- 功能:检查当前系统是否支持 LXC 容器所需的内核配置。
- 用法:
lxc-checkconfig
- 说明:该命令会列出所有与 LXC 相关的内核配置项,并显示它们的状态(启用或禁用)。如果某些必要的配置项未启用,可能会导致 LXC 容器无法正常运行。
2. lxc-create
- 功能:创建一个新的 LXC 容器。
- 用法:
lxc-create -n <容器名称> -t <模板>
-n
:指定容器的名称。-t
:指定使用的模板(例如download
、ubuntu
等)。
- 示例:
lxc-create -n my-container -t download -- --dist ubuntu --release focal --arch amd64
3. lxc-start
- 功能:启动一个已创建的 LXC 容器。
- 用法:
或者以后台模式启动:lxc-start -n <容器名称>
lxc-start -n <容器名称> -d
-d
:以后台模式运行容器。
4. lxc-ls
- 功能:列出系统中所有的 LXC 容器。
- 用法:
或使用更详细的输出格式:lxc-ls
lxc-ls --fancy
- 说明:
--fancy
参数会提供更丰富的信息,包括容器的状态、自动启动设置、组、IP 地址等。
5. lxc-info
- 功能:显示指定容器的详细信息。
- 用法:
lxc-info -n <容器名称>
- 说明:该命令会显示容器的状态、PID、IP 地址等信息。
6. lxc-attach
- 功能:进入一个正在运行的 LXC 容器并执行命令。
- 用法:
或在容器中执行特定命令:lxc-attach -n <容器名称>
lxc-attach -n <容器名称> -- <命令>
- 示例:
lxc-attach -n my-container -- apt update
7. lxc-stop
- 功能:停止一个正在运行的 LXC 容器。
- 用法:
lxc-stop -n <容器名称>
8. lxc-destroy
- 功能:删除一个 LXC 容器(需先停止容器)。
- 用法:
lxc-destroy -n <容器名称>
三、安装LXC
CentOS安装
安装前执行检查看下是否需要卸载,如果需要卸载,执行下面的命令完成卸载,不需要直接到第 2 步
# 一、检查是否安装。清理资源
systemctl status lxc #检查是否安装
lxc-stop -n xxx # lxc-ls -f 遍历所有容器,停止对应的容器
lxc-destroy -n xxx #删除对应的容器
# 二、 卸载软件
yum remove lxc lxc-templates lxc-libs lxc-extra libvirt
debootstrap
# 三、检查,提示服务不存在
systemctl status lxc
CentOS 安装 LXC,如果已经安装,可以检查下是否需要卸载,如果需要卸载执行Centos 卸载 LXC
# 一、 配置源
yum -y install epel-release #这个软件包里包含 epel yum 源和GPG 的配置# 二、 安装程序
# lxc 主程序包
# lxc-templates lxc 的配置模板
# bridge-utils 网桥管理工具 lxc-libs lxc所需的库文件
# libcgroup cgroup 安装包
# libvirt 管理 Linux 的虚拟化功能所需的服务器端守护程序。 需要针对特定驱
动程序的管理程序。
# debootstrap debootstrap 是 Debian 引导程序,它允许您将 Debian基本系统
(例如 Debian 或 Ubuntu)安装到当前正在运行的系统的目录中。
yum -y install lxc lxc-templates bridge-utils lxc-libs libcgroup
libvirt lxc-extra debootstrap#三、启动和检查
#如果未运行输入以下命令完成启动
systemctl start lxc #启动 lxc 服务
systemctl start libvirtd #启动虚拟机监控服务
systemctl status lxc
systemctl status libvirtd
Ubuntu安装
安装前执行检查看下是否需要卸载,如果需要卸载,执行下面的命令完成卸载,不需要直接到第 2 步
# 一、检查是否安装。清理资源
systemctl status lxc
lxc-stop -n xxx # lxc-ls -f 遍历所有容器,停止运行的容器
lxc-destroy -n xxx # 删除对应的容器# 二、 卸载软件
apt-get purge --auto-remove lxc lxc-templates# 三、 检查服务已经没有该服务了
systemctl status lxc
没有安装的话,执行下面的命令完成安装
#一、安装
#lxc 主程序包
#lxc-templates lxc的配置模板
#bridge-utils 网桥管理工具
apt install lxc lxc-templates bridge-utils -y#二、检查服务是否正常运行
systemctl status lxc
四、LXC容器操作实战
查看当前系统
1.检查lxc是否运行
2.检查 lxc 的功能支持情况
3.查看 lxc 提供的容器模板
4.创建一个 lxc 虚拟主机,这个命令就会下载安装指定环境下的软件包,创建新容器。整个过程需要时间较长,与容器的类型有关。
#创建 Ubuntu LXC 容器,-t 指定模板容器,-n 指定要创建的容器名,下面创建
的是 ubuntu
#Centos 上创建 centos 的命令:
lxc-create -t centos --name centos1 -- --release 7 --arch x86_64
#Ubuntu 上创建 centos 的命令,注意模板需要使用 download:
lxc-create --name centos7 --template=download -- --dist=centos --release=7 --arch=amd64
root@nanyi:/var/run/docker/netns#
lxc-create -t ubuntu --name lxchost1 -- -r xenial -a amd64
#
#创建完成显示
##
# The default user is 'ubuntu' with password 'ubuntu'!
# Use the 'sudo' command to run tasks as root in the container.
##
第一次使用这个命令需要等的比较久,一直在安装东西,如果感觉卡着不动,多等待一会哦
5.下载安装完所有软件包后,LXC 容器镜像就创建完成了,你可以看到默认的登录界面。容器被放到 /var/lib/lxc/<容器名> 这个目录下,容器的根文件系统放在/var/lib/lxc/<容器名>/rootfs 目录下。创建过程中下载的软件包保存在 /var/cache/lxc 目录下面,当你想另外建一个一样的容器时,可以省去很多下载时间。
6.查看创建的容器信息
7.启动容器,我们可以看到容器状态为运行中
8.查看容器的详细信息
wuxu@Nanyiroot:~$ sudo lxc-info -n lxchost1
Name: lxchost1
State: RUNNING
PID: 131202
Link: vethNSlklKTX bytes: 936 bytesRX bytes: 1.82 KiBTotal bytes: 2.74 KiB
9.进入容器内部
在看宿主机的内部,发现与容器内部不一样了
这就实现了容器间的资源隔离
10.停止容器
小编总是忘了sudo 不好意思哈
11.删除容器