Docker安装
查看系统版本
lsb_release -a
系统版本如下
更新系统软件包,安装依赖包【用于通过HTTPS来获取仓库】
sudo apt update
sudo apt install apt-transport-https ca-certificates curl software-properties-common
添加Docker官方GPG密钥
sudo -i curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/trusted.gpg.d/docker-ce.gpg
验证公钥的指纹。执行这个命令后,系统会显示与该指纹相关的公钥信息。
sudo apt-key fingerprint 0EBFCD88
添加Docker阿里稳定版软件源
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
再次更新软件包
sudo apt update
安装默认最新版
sudo apt install docker-ce docker-ce-cli containerd.io
检查docker是否安装好
docker -v
版本正常。此外有一些通过docker run hello-world检查并不合适,因为网络的原因并不能pull镜像,并且现在镜像似乎也连不上。最方便的是下载镜像然后传输到服务器上。
镜像下载
如果有外网服务器/电脑,并且装好了docker可以参考这篇博客将镜像pull到外网服务器/电脑上,再打包传输到需要的服务器上。如果没有,可以参考docker-drag这个库将其下载下来。
第一种方法试过了很简单原博客也有比较详细的教程。这里试下第二种方法,尝试pull hello-world失败...out of date。
Kubric镜像配置
查看当前服务器有哪些镜像
docker images
加载kubric镜像(通过之前第一种方法下载的)
docker load < kubric.tar
docker tag 9dd8f5f23f74 kubricdockerhub/kubruntu:latest
Load log如下
上述过程并不能在docker中检测到GPU【即Kubric在渲染过程中, Blender没有检测到GPU, 但能够用GPU正常完成渲染, 重复bug过程这里省略】。需要安装NVIDIA Container Toolkit。安装步骤参考该博客。
1. 创建包仓库和GPG key
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
2. 更新包列表之后安装 nvidia-docker2 包(以及依赖)
sudo apt-get update
sudo apt-get install -y nvidia-docker2
3. 重启docker
sudo systemctl restart docker
4. 通过第一种下载方法下载并load nvidia/cuda:11.0.3-base-ubuntu20.04进行测试。
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
输出正常。
但对于Kubric,Blender虽然能够检测到GPU,但并不能使用GPU来进行渲染。Kubric github的issue 224里有提供解决方案。
1.运行
docker build -f docker/Blender.Dockerfile -t kubricdockerhub/blender-gpu:latest .
GPG error,
参考此博客, 在Blender.Dockerfile里两个stage前添加两次下部分代码
RUN rm /etc/apt/sources.list.d/cuda.list
RUN apt-key del 7fa2af80
RUN apt-get update && apt-get install -y --no-install-recommends wget
RUN wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-keyring_1.0-1_all.deb
RUN dpkg -i cuda-keyring_1.0-1_all.deb
报错(很奇怪,之前另一台服务器没报这种错误)
登录后网不好也连不上
2. 使用官方的镜像生成长宽不一致的视频如,(384,256),会在保存segmentation的时候报错。
进入镜像
docker run -it kubricdockerhub/kubruntu
bug原因,write_palette_png函数中png.Writer那一行width在前(官方github repo中已经改过来了)
可以安装vim直接编辑
apt-get update
apt-get install vim
/usr/local/lib/python3.9/dist-packages/kubric/file_io.py
在/usr/local/lib/python3.9/dist-packages/kubric
python setup.py bdist_wheel
交互式进入容器
docker run -it kubricdockerhub/kubric_gpu:latest
还有很多其他曲折,但由于过了很长时间,现在已经忘了,有机会再写这篇博客。
参考
docker 报错:不能选择设备驱动 could not select device driver 的解决方法(实测有效)
Ubuntu安装docker并运行测试【docker默认最新,虚拟机版本22.04】
docker 报错:不能选择设备驱动 could not select device driver 的解决方法(实测有效)