type
status
date
slug
summary
tags
category
icon
password
宿主机
系统
建议安装server版,通过ssh远程使用
环境
安装NVIDIA显卡驱动、CUDA、cudnn 参考:ubuntu安装cuda及cudnn
LXD的安装与初始化
安装LXD
sudo apt-get install lxd zfsutils-linux bridge-utils
- LXD 实现虚拟容器
- ZFS 用于管理物理磁盘,支持LXD高级功能
- bridge-utils 用于搭建网桥
配置ZFS
- 查看可用磁盘和分区
sudo fdisk -l

可以看到这块磁盘一共3.65T,只使用了500G,剩余的空间专门留出来用于LXD容器的。
- 查看分区
sudo fdisk /dev/sda

按下图操作,将磁盘所剩空间全部作为容器的存储空间。分区为
/dev/sda2
。
LXD初始化
lxd init

这里面的配置错了也没关系,还可以使用
sudo lxc profile edit default
再次修改配置
容器的创建与连接
创建容器
sudo lxc launch ubuntu:20.04 lgh
进入容器
sudo lxc exec lgh bash

这里进入的是root用户,实际上容器里面还有一个用户名为
ubuntu
的默认用户修改密码
passwd root passwd ubuntu
网上说默认密码和用户名相同,我输入一直双周,因此直接重置了密码
设置SSH
编辑
/etc/ssh/sshd_config
文件,将 PasswordAuthentication
改为yessudo nano /etc/ssh/sshd_config # 重启ssh服务 sudo /etc/init.d/ssh restart

退出容器
exit
查看容器IP
sudo lxc list

端口转发
sudo lxc config device add lgh proxy0 proxy listen=tcp:{宿主机IP}:6002 connect=tcp:10.228.141.116:22 bind=host
这里将宿主机的6002端口映射到了容器的22端口,ssh连接宿主机的6002端口即可进入容器
初始容器的配置
连接容器
ssh ubuntu@{宿主机IP} -p 6002
添加显卡
添加所有显卡
lxc config device add {容器名} gpu gpu
添加指定显卡
lxc config device add {容器名} gpu0 gpu id=0
安装显卡驱动
与宿主机的显卡版本必须一致,需要注意的是容器里面安装显卡驱动时需要加上后面的参数,安装时不需要安装到内核
sudo sh ./NVIDIA-Linux-X86_64-[YOURVERSION].run --no-kernel-module
容器模板
可以将配置好的容器打包成镜像模板,方便后续的容器创建
- 停止容器
lxc stop {容器名}
- 打包
sudo lxc publish {容器名} --alias {镜像名} --public
共享目录
lxc profile device add default data disk source=/data/lxd-data path=/opt/data
遇到的问题
- 宿主机的英伟达驱动重启了后宿主机不使用,容器内是不能用的,解决方法如下
sudo -S /sbin/modprobe nvidia-uvm D=`grep nvidia-uvm /proc/devices | awk '{print $1}'` sudo -S mknod -m 666 /dev/nvidia-uvm c $D 0
参考文章
- 作者:Ghlerrix
- 链接:https://ghlerrix.eu.org/posts/a19895
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章