Docker in docker .解决技术环境问题

缘由

很多时候我们会使用docker作为环境的控管,确保服务执行时环境是一致的。
但某些时候我们可能服务需要执行同时需要资源以及环境的东西
例如:tensorflow inference
有两种做法可以从container创建一个container

方法1

连结 Linux docker 至 container内部
http://img2.58codes.com/2024/20135942erQj2CM69c.png
概念:
将Linux docker服务直接送入至container内,使其可以直接呼叫。

docker run hello-world -v /var/run/docker.sock:/var/run/docker.sock
简单暴力解决方法后续若要改为云端k8s部属服务,会遇到问题

方法2 在 docker container 安装docker

*此安装在nvcr.io/nvidia/tensorflow:20.10-tf2-py3做为基底的container进行

http://img2.58codes.com/2024/20135942wNJme1HBPy.png

安装Docker

apt update
apt install docker.io

安装nvidia runtime

curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \ apt-key add -distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \  tee /etc/apt/sources.list.d/nvidia-container-runtime.list apt updateapt install nvidia-container-runtime

& 是背景执行的意思,透过 fg即可叫回前景。

调整相关设定

由于container并没有systemctl,必须手动调整一些参数。
于/etc/docker/daemon.json 修改:

{ "storage-driver":"vfs","runtimes":{        "nvidia":{                "path":"nvidia-container-runtime",                "runtimeArgs":[]        }  }}

vfs 由于在container内所使用的硬碟格式与linux环境不同,故作调整
runtimes安装完nvidia runtime无法自动完成安装,必须手动调整

手动启动docker daemon

dockerd &

测试环境是否可行

测试内container是否会顺利运行
docker run hello-world

测试内container是否能access gpu resource
docker run --runtime=nvidia nvcr.io/nvidia/tensorflow:20.10-tf2-py3 nvidia-smi


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章