LXC(Linux Containers)是一种操作系统级虚拟化技术,通过 Linux 内核的 cgroup(资源控制)、namespace(资源隔离)等特性,实现对进程组的隔离与管控,能在单个 Linux 主机上运行多个相互隔离的 “容器” 环境,每个容器拥有独立的文件系统、网络、进程空间等,且共享主机内核。

语法

安装

首先先查看是否已经安装LXC,如果已经安装,就需要看是否还留有没有删除的容器

# 检查是否已安装
systemctl status lxc

如果没有安装就是以下场景

如果安装了,就需要使用LXC的命令对容器进行删除

# 查看当前已有容器
lxc-ls -f

# 停止当前正在运行的容器(停止之后才能删除)
lxc-stop -n xxx

# 删除当前已有的停止的容器
lxc-destroy -n xxx

卸载和安装指令,安装之后在进行一次检查

# 安装
apt install lxc lxc-templates bridge-utils -y

# 卸载
apt -get purge --auto-remove lxc lxc-templates

基础命令

检查系统环境是否满足容器使用

输入以下指令之后,显示 enable 的就是可以进行使用的

lxc-checkconfig

创建容器

在创建之前,可以先看看可以创建哪些模板

# 查看模板
ls /usr/share/lxc/templates

然后可以根据模板来创建不同的容器,第一次创建时耗时较长,需要进行下载

lxc-create -n/--name NAME -t/--template TEMPLATE_NAME [option]
# NAME :容器名称
# TEMPLATE_NAME  :模板名称
  • option

    • --release/-r :指定模板版本(使用代号)

    • -a :指定架构

常用的模板以及其版本代号

模板

版本代号

版本号

支持状态

ubuntu

Ubuntu

xenial

16.04 LTS

已停止支持

ubuntu

Ubuntu

bionic

18.04 LTS

已停止支持

ubuntu

Ubuntu

focal

20.04 LTS

支持中(至 2025)

ubuntu

Ubuntu

jammy

22.04 LTS

支持中(至 2027)

ubuntu

Ubuntu

noble

24.04 LTS

支持中(至 2029)

debian

Debian

buster

10

已停止支持

debian

Debian

bullseye

11

支持中(至 2026)

debian

Debian

bookworm

12

支持中(至 2028)

centos

CentOS

7

7

已停止支持

centos

CentOS

8

8

已停止支持

alpine

Alpine

3.18

3.18

已停止支持

alpine

Alpine

3.19

3.19

支持中(至 2024)

alpine

Alpine

3.20

3.20

支持中(至 2025)

常用 LXC 模板的架构支持

模板名

支持的架构

备注

ubuntu

amd64i386arm64armhf

主流架构全覆盖

debian

amd64i386arm64armhf

同 Ubuntu,兼容性好

centos

amd64arm64

仅支持主流 64 位架构

alpine

amd64i386arm64armhfppc64le

轻量且架构支持广泛

fedora

amd64arm64

类似 CentOS

启动容器

# -d 不是必须,输入表示支持后台运行
lxc-start -n NAME [-d]

查看当前所有容器

# -f 表示显示出所有常用的信息
lxc-ls -f

查询容器信息

lxc-info -n NAME

链接容器

# 如果没有 [要执行的命令] 就会进入容器的交互式shell(默认/bin/bash或者/bin/sh)
lxc-attach -n NAME [option] [要执行的命令]

我们进入容器之后可以直接进行使用,输入命令(比如apt install、ls等)

同时我们可以直接在容器内执行单个命令,注意命令前需要加上 -- 进行分割,避免参数混淆,尤其是命令含选项的时候

# 查看容器内的系统版本
sudo lxc-attach -n NAME -- cat /etc/os-release

# 在容器内安装
sudo lxc-attach -n NAME -- apt install [name] -y

# 查看容器内运行的进程
sudo lxc-attach -n NAME -- ps aux

停止容器运行

lxc-stop -n NAME

销毁容器

lxc-destroy -n NAME

实战

首先我们先查看有没有安装,以及环境配置

# 检查是否已安装
systemctl status lxc
# 检查环境配置
lxc-checkconfig

创建新的容器,我的系统是ubuntu,那这里我就创建一个centOS的容器

# 创建一个centOS容器,模板为 centos ,模板号为
lxc-create -n centTest -t centos -- -R 7 -a amd64
# 不使用架构
lxc-create -n centTest -t centos -- -R 7

这里在创建的时候我遇到了两个问题:

  • 架构参数指定错误

因为我的主机是x86_64架构,本质上和amd64是同一架构,但模板识别时因参数写法冲突导致判定为 “架构不匹配”,具体解决方法如下:

# x86_64主机创建amd64容器无需手动指定架构,模板会自动适配
lxc-create -n centTest -t centos -- --release 7

# 显式指定架构
lxc-create -n centTest -t centos -- --release 7 --arch x86_64
  • ubuntu没有 yum

下载 yum 

apt update && apt install -y yum rpm

不过需要提醒的是 Ubuntu 20.04 及以上版本的官方源中已移除yum

所以我最终还是创建了一个ubuntu容器!

lxc-create -n ubuntuTest -t ubuntu -- --release jammy

# 查看容器是否已经创建成功
lxc-ls -f

然后运行对应的容器

lxc-start -n ubuntuTest -d

使用用户名和密码登录容器登录容器

lxc-attach -n 容器名

# 使用ssh
ssh username@容器IP
# 如果不知道容器IP 可以先进行查询
lxc-info -n NAME

然后就可以在容器中使用命令进行交互了

最后我们不再使用之后就退出停止,并进行销毁

# 退出
exit

# 停止运行
lxc-stop -n NAME

# 销毁容器
lxc-destroy -n NAME

最后查看容器是否已经被销毁

lxc-ls -f

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐