使用virt-manager创建debian容器

2023-01-13  本文已影响0人  绿箭ML

创建debian容器

使用virt-manager 管理容器

流程概述:

以下操作均在root用户下进行。

debootstrap 下载最小化系统

实际安装发现最小化系统并未包含以下软件包,需要包含进去

创建容器根分区目录 /mnt/lxc/debian-bookworm

mkdir -p /mnt/lxc/debian-bookworm

从opentuna源拉取debian12(开发代号:bookworm)基础软件包,包含dbus,locales软件包。

debootstrap --include=dbus,locales debookworm debian-bookworm https://opentuna.cn/debian

修改容器root密码

chroot到容器根分区目录 /mnt/lxc/debian-bookworm

chroot /mnt/lxc/debian-bookworm

在chroot下修改root用户密码

passwd root

通过virt-manager添加debian容器

如果没有安装virt-manager,他是个图形软件,先安装

apt install virt-manager

他是一个python实现的软件,作为libvirt的GUI前端。

libvirt支持管理虚拟kvm虚拟机或者lxc容器等。

1.创建lxc连接(连上libvirt后端)

文件 > 添加连接

弹窗配置“虚拟机管理程序”选择“Libvirt-LXC”,保存完成新增一个连接。

2.右键选择已经添加的“LXC”连接,“新建”,调出创建容器的引导页。

3.引导页面需要选择libvirt哪个类型的连接,创建容器选择lxc的,选择“操作系统容器”

4.填写容器根分区路径,例如 /mnt/lxc/debian-bookworm

5.设置cpu和内存的限制,根据实际情况设置。

6.选择一个网络,如果没有网络,则需要创建。勾选“在安装前自定义配置”,做最后的调整,此时并未执行容器。

7.开始安装容器。

配置容器网络

可以启动容器后,在容器内设置网络。

容器的网络结构有:

none 不使用网络,容器内没有网络

host 网络不隔离,但是由宿主管理网络的,容器不要去管理网络

bridge 桥接,通过将一个虚拟网卡一端放在隔离的网络空间,另外一端挂在一个bridge的一个端口上。

宿主                |容器
bridge <==> veth <= | => eth0
                    |

bridge 由 libvirtd管理,根据实际情况,配置成nat上网,配置DHCP服务,让容器能通过dhcp获取ip配置。

macvtap 接口虚拟出一个网卡给容器使用,他们是不能直接互通。

宿主            |容器
物理网卡        |
   \============|========> eth0
                |

只讨论 macvtap 和 bridge 的情况,这种情况下,网卡的ip可以由容器内的网络管理服务接管。

常见可选的网管服务有:

debian默认使用systemd作为init,不需要额外安装网管软件就可使用,其他两个可以在debootstrap阶段把对应的包也安装进去。

网管软件只需要选一个。

先用 ip link 查看、确定网卡名称。

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

52: eth0@if53: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 00:16:3e:ef:72:18 brd ff:ff:ff:ff:ff:ff link-netnsid 0

一般情况下是eth0。网络配置可以通过网卡名来匹配

创建一个 .network 配置

nano /etc/systemd/network/eth0.network

network配置是ini风格的配置文件,这个配置分成两部分,[Match] 匹配特定的网卡,[Network] 节则针对匹配到的网卡配置。

[Match]
Name=eth0

[Network]
DHCP=yes

使用DHCP获取ip,如果使用静态,则需要设定ip地址(Address)、网关(Gateway)、DNS

[Match]
Name=eth0

[Network]
Address=192.168.1.3/24
Gateway=192.168.1.1
DNS=223.5.5.5

ctrl+o 保存文件

ctrl+x 退出 nano

需要让容器启动时启动 systemd-networkd 服务,这个和物理机配置服务一样的

systemctl enable --now systemd-networkd

使用 networkctl 可以重载 .network 配置,或者重启接口

网络配置成功后,容器基本可用

使用virsh 关闭容器

如果使用virsh命令关闭容器,使用initctl,让systemd执行关机流程,然后关闭容器

virsh -c lxc:///system shutdown --mode initctl 容器名称
上一篇 下一篇

猜你喜欢

热点阅读