docker基础-LXC
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 |
|
16.04 LTS |
已停止支持 |
|
|
Ubuntu |
|
18.04 LTS |
已停止支持 |
|
|
Ubuntu |
|
20.04 LTS |
支持中(至 2025) |
|
|
Ubuntu |
|
22.04 LTS |
支持中(至 2027) |
|
|
Ubuntu |
|
24.04 LTS |
支持中(至 2029) |
|
|
Debian |
|
10 |
已停止支持 |
|
|
Debian |
|
11 |
支持中(至 2026) |
|
|
Debian |
|
12 |
支持中(至 2028) |
|
|
CentOS |
|
7 |
已停止支持 |
|
|
CentOS |
|
8 |
已停止支持 |
|
|
Alpine |
|
3.18 |
已停止支持 |
|
|
Alpine |
|
3.19 |
支持中(至 2024) |
|
|
Alpine |
|
3.20 |
支持中(至 2025) |
常用 LXC 模板的架构支持
|
模板名 |
支持的架构 |
备注 |
|
|
|
主流架构全覆盖 |
|
|
|
同 Ubuntu,兼容性好 |
|
|
|
仅支持主流 64 位架构 |
|
|
|
轻量且架构支持广泛 |
|
|
|
类似 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
更多推荐



所有评论(0)