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

文章目录

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

配置宿主机网络

  • 进入 /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.rhkb.cn/news/422696.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ClassLoader中各个字段意思

ClassLoader(类加载器)是JVM(Java虚拟机)中一个非常重要的组件,它主要负责将Java类文件(.class文件)加载到JVM的内存中,并对其进行验证、准备、解析和初始化。ClassLoader中的字段就…

CPU 和 GPU:为什么GPU更适合深度学习?

目录 什么是 CPU ? 什么是 GPU ? GPU vs CPU 差异性对比分析 GPU 是如何工作的 ? GPU 与 CPU 是如何协同工作的 ? GPU vs CPU 类型解析 GPU 应用于深度学习 什么是 CPU ? CPU(中央处理器)…

美团面试:Redis锁如何续期?Redis锁超时,任务没完怎么办?

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中,最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团的面试资格,遇到很多很重要的面试题: Redis分布式锁,过期怎么办? 如…

pod被驱逐追溯根因

背景 收到pod报警,看到其状态是error,新的pod又在另外一台机器上起来了。 原因分析 describe pod看到pod被驱逐 Status: Failed Reason: Evicted Message: The node was low on resource: ephemeral-storage. Containe…

VulnHub DC-1-DC-7靶机WP

VulnHub DC系列靶机:https://vulnhub.com/series/dc,199/ # VulnHub DC-1 nmap开路获取信息 Nmap scan report for 192.168.106.133 Host is up (0.00017s latency). Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 1…

用手机剪辑视频素材从哪里找?用手机视频素材库分享

如何找到优质的视频剪辑素材呢?这里有几个提供高质量视频素材的优秀网站,帮助你的视频制作更上一层楼。 蛙学网 蛙学网是视频素材领域的佼佼者,提供了从自然风景到城市生活,再到动物世界的广泛视频素材。蛙学网的素材种类丰富&am…

语音克隆神器GPT-Sovits-V2 Mac版整合包!

语音克隆神器GPT-Sovits-V2 Mac版整合包! Mac M1/M2/M3芯片福音!语音克隆神器GPT-Sovits-V2整合包来了! AI语音克隆黑科技,Mac也能轻松玩转! 还在羡慕别人用AI语音克隆技术?还在苦恼Mac配置环境的复杂&am…

Mysql连接不上的问题?

Mysql服务器本地能访问,但是外部连接报错如下:显然我也知道这就是一个权限问题,但是在网上百度的方法要么就是不生效,要么就是执行命令报错,很抓狂~这里提供精准的解决方案:SELECT User, Host F…

Linux的历史,版本,Linux的环境安装、简单学习4个基本的Linux指令、创建普通用户等的介绍

文章目录 前言一、Linux的历史二、版本三、Linux的环境安装1. 腾讯云服务器的申请2. xshell的安装与使用 四、 简单学习4个基本的Linux指令1. ls2. pwd3. mkdir4. cd 五、创建普通用户总结 前言 Linux的历史,版本,Linux的环境安装、简单学习4个基本的Li…

OPENAIGC开发者大赛企业组银奖 | Gambit-AI智能合同审核助手

在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给您…

机器学习--支持向量机(SVM)

支持向量机(线性) S V M SVM SVM 引入 S V M SVM SVM 用于解决的问题也是 c l a s s i f i c a t i o n classification classification,这里 y ∈ { − 1 , 1 } y \in \{-1, 1\} y∈{−1,1} 比如说这样一个需要分类的训练数据: 我们可以有很多直线来…

最新kubernetes的安装填坑之旅(新手篇)

Kubernetes(常简称为 K8s)是一个开源的容器编排平台,用于自动化部署、扩展和管理容器化应用程序,lz也不知道哪根脑经秀逗了,竟然妄挑战学习一下,结果折戟沉沙,被折腾的欲仙欲死,不过…

安卓学习笔记-unity调用原生opencv的sdk

unity调用原生opencv的sdk 问题描述解决思路解决过程准备工作opencv安卓原生sdk找到人脸检测的代码,检测成功后发送消息给unityunity接收消息 遇到的问题问题一问题二问题三 如何解决遇到的问题问题一:opencvactivity遮挡unity的界面问题问题二&#xff…

《OpenCV计算机视觉》—— 对图片进行旋转的两种方法

文章目录 一、用numpy库中的方法对图片进行旋转二、用OpenCV库中的方法对图片进行旋转 一、用numpy库中的方法对图片进行旋转 numpy库中的 np.rot90 函数方法可以对图片进行旋转 代码实现如下: import cv2 import numpy as np# 读取图片 img cv2.imread(wechat.jp…

Golang | Leetcode Golang题解之第400题第N位数字

题目: 题解: func findNthDigit(n int) int {d : 1for count : 9; n > d*count; count * 10 {n - d * countd}index : n - 1start : int(math.Pow10(d - 1))num : start index/ddigitIndex : index % dreturn num / int(math.Pow10(d-digitIndex-1)…

【三刷C语言】各种注意事项

这里是阿川的博客,祝您变得更强 ✨ 个人主页:在线OJ的阿川 💖文章专栏:C语言入门到进阶 🌏代码仓库: 写在开头 现在您看到的是我的结论或想法,但在这背后凝结了大量的思考、经验和讨论 目录 1.…

无线领夹麦克风怎么挑选?选购麦克风必看的避坑指南

在这个视频自媒体行业的蓬勃发展的时代,麦克风对于自媒体行业可以说是必不可少的装备了,在各大视频博主、Up主、主播通过互联网输出自己想法的同时,一个好的麦克风可以让事情事半功倍,通过麦克风提高收音音质,减少后期…

数据结构算法——排序算法

1.排序 1.选择排序 不稳定&#xff0c;一般不用&#xff0c;基本排序 思路&#xff1a;过滤数组&#xff0c;找到最小数&#xff0c;放在前面。 不稳&#xff1a;导致原本在前的数据移动到后面。 int arr[];for(i0;i<arr.length-1;i){int smallesti; for(ji1;j<leng…

【OpenCV】灰度化和二值化处理图像

文章目录 1. 图像灰度化处理对比2. 代码示例3. 二值化处理 1. 图像灰度化处理对比 2. 代码示例 #include <opencv2/opencv.hpp> using namespace cv;int main() {Mat currentImage imread("path_to_image.jpg"); // 读取彩色图像Mat grayImage;// 将彩色图像…

SOMEIP_ETS_106: SD_ClientServiceSubscribeEventgroup

测试目的&#xff1a; 验证DUT在客户端模式下能够订阅测试器提供的ETS&#xff08;Enhanced Testability Service&#xff09;服务。 描述 本测试用例旨在确保DUT在客户端模式下能够通过发送FindService消息发现服务&#xff0c;并在接收到测试器提供的OfferService消息后&a…