LXC容器属于体系级假造化方案(LXD vs Docker),用在单个主机上运行多个隔离的Linux体系容器,比方同时运行Ubuntu和CentOS,各个体系公用一套Linux内核,并且具有完全独立的开发情况。LXC是基于Linux内核的容器技术,与Linux使用体系更加天然集成,提供更好的性能。但LXC也有缺点:如无法有效支持跨主机之间的容器迁徙、管理复杂等。而LXD很好地办理了这些问题。
Welcome to Ubuntu 18.04.6 LTS (GNU/Linux 5.4.0-150-generic x86_64)
复制代码
4.1.3 在PyCharm中使用SSH远程开发
使用该方案,可以办理服务器界面不友好的问题。详见How to develop using SSH in PyCharm
4.2 镜像和快照
由于容器是运行在宿主机上的,宿主机具有对容器体系举行备份、恢复的本领。LXD容器提供了镜像和快照功能,将当前体系天生镜像可以将其快速部署到新的体系上(需要LXD情况);通过天生体系快照,可以在体系出现问题时快速恢复到原先正常的状态。详细使用参考How to create LXD snapshot and image,注意:这一使用需要有权限访问宿主机。
4.3 新增用户
第一种方式是在一个公用容器(已经建立好了一个Common- Server)上直接建立多个用户,然后每个用户分配对应的权限(目前按照最高用户权限来)。这种方式的利益是使用简朴,无需重新设置情况,对于新手大概对于无特别情况要求的开发者友好(Common-Server的内网穿透、PyTorch情况已经设置好了)。详细使用参考How to create a new LXD-based system,注意:这一使用需要有权限访问宿主机。
4.3.2 新增LXC容器用户
某些用户对开发情况有特别要求,且不希望和其它用户共享情况设置,则建议新增一个LXD容器体系。对于新增LXD容器体系,目前有两种方式,此中一种是直接根据Common-Server的镜像克隆一个体系(体系版本是Ubuntu18.04)。对于需要其它版本体系的用户,需要重新下载新的镜像安装,此时可根据需要设置开发情况。详细使用参考How to create a new LXD-based system,注意:这一使用需要有权限访问宿主机。
4.4 拓展空间
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.cuda.is_available())
/home/user/.conda/envs/pytorch/lib/python3.8/site-packages/torch/cuda/__init__.py:138: UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing enble devices to be zero. (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:108.)
return torch._C._cuda_getDeviceCount() > 0
False
>>> exit()
(pytorch) user@Common-Server:~$ sudo reboot
复制代码
可能由于主机断点重启之后分配给容器的某些参数错误,详细原因参考UserWarning: CUDA initialization: CUDA unknown error - this may be due to an incorrectly set up environment, e.g. changing env variable CUDA_VISIBLE_DEVICES after program start. Setting the available devices to be zero - PyTorch Forums。
办理方法是再LXC服务启动之前在宿主机上初始化一下torch情况,首先需要新建一个脚本
#!/bin/bash
# 激活 conda 环境
source /path/to/anaconda3/etc/profile.d/conda.sh
conda activate pytorch
# 运行 Python 脚本
python - <<EOF
import torch
print(torch.cuda.is_available())
EOF
# 退出 conda 环境
conda deactivate
复制代码
添加权限
chmod +x /home/your_user/scripts/init_torch.sh
复制代码
新建自启动服务
sudo nano /etc/systemd/system/init_torch.service
复制代码
内容如下
[Unit]
Description=Run init_torch script before LXC containers start