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

缘由

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

方法1

连结 Linux docker 至 container内部
https://ithelp.ithome.com.tw/upload/images/20210319/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进行

https://ithelp.ithome.com.tw/upload/images/20210319/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 update

apt 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


<<:  【资料库系统】 L4 中级资料库

>>:  [MSSQL维护] SQL 侦测 - 在忙什麽,为什麽这麽慢~~

各式各样的演算法 - Greedy、Dynamic Programming 与 Divide and Conquer

题组回顾与观念统整 这一段我们着重在「动态规划」优化,如何从穷举或递回的方法中进一步地将结果记录下...

【D19】尝试料理#2:取得所有指数清单

前言 发现无法轻易取得股票资讯,但换个念头,这应该是市场上所有的资料吧,剩下就是要进行筛检。不过今天...

Vaadin 工具 / 後记 - day30

Vaadin Start Vaadin 官方网站提供快速产出程序码工具,所见即所得,还可设定权限,分...

创建App-厂商合作提案

创建App-厂商合作提案 本界面的背景依然使用处理过的图片,界面非常简单,只有主题「如何与TeenM...

[30天 Vue学好学满 DAY19] Vuex -2

State 定义状态 store.js state: { // 待办事项 todoList: [&q...