美文网首页
使用virt-manager创建debian容器

使用virt-manager创建debian容器

作者: 绿箭ML | 来源:发表于2023-01-13 20:32 被阅读0次

    创建debian容器

    使用virt-manager 管理容器

    流程概述:

    • 通过debootstrap下载debian最小化根目录
    • 修改容器root密码
    • 通过virt-manager添加debian容器配置
    • 配置容器的网络(和物理机类似)

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

    debootstrap 下载最小化系统

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

    • locales 语言包
    • dbus d-bus总线服务,systemd相关的前端工具(networkctl)通过dbus与服务端通讯,dbus服务异常会导致异常
    • openssh-server 可选,ssh服务端

    创建容器根分区目录 /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可以由容器内的网络管理服务接管。

    常见可选的网管服务有:

    • ifupdown
    • network-manager
    • systemd-networkd systemd组件的一部分,默认就能用。

    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 容器名称
    

    相关文章

      网友评论

          本文标题:使用virt-manager创建debian容器

          本文链接:https://www.haomeiwen.com/subject/lvzgcdtx.html