Linux上Docker安装及Kubric镜像配置

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镜像下载到本地,并导入其他服务器

docker 报错:不能选择设备驱动 could not select device driver 的解决方法(实测有效)

Ubuntu安装docker并运行测试【docker默认最新,虚拟机版本22.04】

在线下载Docker Hub镜像并导出为tar包

docker-drag

docker 报错:不能选择设备驱动 could not select device driver 的解决方法(实测有效)

How to use GPU for Blender rendering?

Docker修改默认数据目录Docker Root Dir

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值