当前位置: 首页 > news >正文

桥接网络设置多用户lxd容器

文章目录

      • 前言
      • 配置宿主机网络
      • 固定内核版本
      • 安装 lxd、zfs 及 bridge-utils
      • 安装宿主机显卡驱动
      • lxd 初始化
      • 创建容器模板
      • 安装容器显卡驱动
      • 复制容器

前言

使用桥接网络配置 lxd 有个好处,就是每个用户都可以在该局域网下有一个自己独立的 IP,该 IP 的端口可以由用户自己设置和使用,无需进行端口转发的操作。

配置宿主机网络

  • 进入 /etc/netplan/ 目录有一个 yaml 配置文件,下面的命令需要根据自己的 yaml 文件名称自行修改:
    sudo cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
    sudo vim /etc/netplan/01-netcfg.yaml
    
    修改内容如下:
    # This file describes the network interfaces available on your system
    # For more information, see netplan(5).
    network:version: 2renderer: networkdethernets:eno1:dhcp4: nodhcp6: nobridges:br0:dhcp4: nodhcp6: nointerfaces:- eno8303addresses: [ 192.168.23.115/24 ]gateway4: 192.168.23.1nameservers:addresses:- 114.114.114.114- 8.8.8.8parameters:stp: falseforward-delay: 0
    
    其中:
    • addresses: [ 192.168.23.115/24 ] 为任意网络无人占用的 IP 即可。
    • gateway4: 192.168.23.1 为网关地址。
    • eno8303 为网卡名称,可以使用 ip a 命令查看。
  • 应用网络配置:
    sudo netplan --debug apply
    

固定内核版本

sudo apt-mark hold linux-image-generic linux-headers-generic

安装 lxd、zfs 及 bridge-utils

sudo snap install lxd
sudo apt install zfsutils-linux bridge-utils

安装宿主机显卡驱动

  • 安装依赖:
    sudo apt install gcc g++ make
    
  • 安装驱动:
    sudo bash ./NVIDIA-Linux-x86_64-550.90.07.run
    
  • 查看显卡:
    nvidia-smi
    
    在这里插入图片描述

lxd 初始化

  • 初始化 lxd:
    sudo lxd init
    
    在初始化过程中,不要创建新的网桥,已存在的网桥名为 br0,其他设置默认即可.
    Would you like to use LXD clustering? (yes/no) [default=no]:
    Do you want to configure a new storage pool? (yes/no) [default=yes]:
    Name of the new storage pool [default=default]: lxd
    Name of the storage backend to use (btrfs, ceph, dir, lvm, zfs) [default=zfs]:
    Create a new ZFS pool? (yes/no) [default=yes]:
    Would you like to use an existing block device? (yes/no) [default=no]:
    Size in GB of the new loop device (1GB minimum) [default=100GB]: 1200
    Would you like to connect to a MAAS server? (yes/no) [default=no]:
    Would you like to create a new local network bridge? (yes/no) [default=yes]: no
    Would you like to configure LXD to use an existing bridge or host interface? (yes/no) [default=no]: yes
    Name of the existing bridge or host interface: br0
    Would you like LXD to be available over the network? (yes/no) [default=no]:
    Would you like stale cached images to be updated automatically? (yes/no) [default=yes]
    Would you like a YAML "lxd init" preseed to be printed? (yes/no) [default=no]:
    

创建容器模板

  • 创建的容器版本最好与宿主机版本相同:

    sudo lxc launch ubuntu:22.04
    
  • 为方便后续使用,修改容器名:

    sudo lxc stop equipped-locust
    sudo lxc rename equipped-locust template
    sudo lxc start template
    
  • 为容器添加设备和权限:

    sudo lxc config device add template gpu gpu
    sudo lxc config set template security.nesting true
    sudo lxc config set template security.privileged true
    
  • 如果宿主机有多张显卡,一定要指定 GPU 的索引号:

    sudo lxc config device add template gpu-tmp0 gpu id=0
    sudo lxc config device add template gpu-tmp1 gpu id=1
    

    使用 nvidia-smi 查看 GPU 的索引号:
    在这里插入图片描述

  • 启动容器:

    lxc start template
    
  • 进入容器:

    sudo lxc exec template bash
    

    其中 template 为容器名。

  • 和宿主机一样,进入 /etc/netplan/ 目录有一个 yaml 配置文件,下面的命令需要根据自己的 yaml 文件名称自行修改:
    编辑 yaml 配置文件:

    mv /etc/netplan/50-cloud-init.yaml /etc/netplan/50-cloud-init.yaml.bak
    vim /etc/netplan/50-cloud-init.yaml
    

    修改内容如下:

    network:version: 2ethernets:eth0:dhcp4: nodhcp6: noaddresses:- 192.168.23.150/24gateway4: 192.168.23.1nameservers:addresses:- 114.114.114.114- 8.8.8.8
    

    其中:

    • addresses 为容器模板的 IP,与宿主机在同一网段下。
    • gateway4 为网关地址。
  • 应用网络配置:

    netplan --debug apply
    
  • 更改容器用户名和密码:
    容器默认用户名为 ubuntu,这里想把他改成 tmp,命令如下:

    usermod -l tmp -d /home/tmp -m ubuntu
    groupmod -n tmp ubuntu
    

    此时 /home 文件夹下只剩下 tmp 目录。
    更改 tmp 用户密码和 root 密码:

    passwd tmp
    passwd root
    
  • 配置容器 ssh 连接:
    安装 ssh :

    sudo apt install openssh-server
    

    安装完后,使用 systemctl 启动 ssh 服务:

    sudo systemctl enable --now ssh
    

    然后检查 ssh 服务运行状态,确保服务正常运行并且没有错误输出(显示 active running 表示服务正常):

    sudo systemctl status ssh
    

    在这里插入图片描述

    编辑 ssh 配置文件:

    vim /etc/ssh/sshd_config
    

    将其中以下内容进行修改:

    Port 22
    PubkeyAuthentication no
    PasswordAuthentication yes
    KbdInteractiveAuthentication yes
    

    重启 ssh 服务:

    systemctl restart sshd
    

    此时可以用 exit 命令退出到宿主机中,用 SSH 命令远程连接容器:

    sudo ssh ubuntu22-tmp@10.22.118.222
    

    输入密码,能登录则没问题。

  • 配置容器软件源:
    备份原来的源:

    sudo mv /etc/apt/sources.list /etc/apt/sources.list.bak
    

    将源的内容设置为清华镜像:

    sudo apt install vim
    sudo rm /etc/apt/sources.list
    sudo vim /etc/apt/sources.list
    

    将其中内容改为:

    # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
    deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse# 预发布软件源,不建议启用
    # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
    # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse 作者:贝拉的海 https://www.bilibili.com/read/cv17891624?spm_id_from=333.999.0.0 出处:bilibili
    

    更新软件列表:

    sudo apt update
    sudo apt upgrade
    
  • 设置 pip 清华源:

    sudo apt install python3-pip
    pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    

安装容器显卡驱动

容器和宿主机的显卡驱动必须保持一致,因此需要将宿主机的驱动文件传输到容器中。 因为刚安好了 ssh,因此可以选择 scp 传输。在宿主机中输入以下命令:

scp ./NVIDIA-Linux-x86_64-550.90.07.run yhl@192.168.23.151:/home/yhl/

传输后通过 ssh 进入容器,输入以下命令安装显卡驱动:

sudo bash ./NVIDIA-Linux-x86_64-418.56.run --no-kernel-module

由于容器和宿主机共享内核,所以在安装容器的显卡驱动时需要添加 --no-kernel-module 参数。

复制容器

lxc copy template yhl

新复制的容器用于与容器模板相同的配置,但需要另行安装显卡驱动。


http://www.mrgr.cn/news/26088.html

相关文章:

  • .SUFFIXES:
  • 查询数据起始时间判断
  • Vue实用操作-2-如何使用网页开发者工具
  • 网页上的文件我不想下载只想看,一个插件满足你(所有文件)
  • leetcode 2398.预算内的最多机器人数目
  • Ready Go
  • 数据库基础知识---------------------------(1)
  • 【Qt笔记】QScrollArea控件详解
  • Web3入门指南:从基础概念到实际应用
  • N2011A叉车限速器如何实现超速报警且强制限速的
  • 【Flutter】⭐️UI库推荐! Flutter 中使用 dropdown_search实现下拉搜索效果
  • volatile关键字
  • 北京网页制作-网站策划
  • Shell:初识sed、awk
  • C++11第四弹:包装器
  • 干货分享,大厂内部压测方案设计
  • 详说 类和对象
  • 深入探索系统架构设计
  • 队列的实现(C语言)
  • 供应RM500UCNAB-D10-SNADA模块