iT邦幫忙

0

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


尚未有邦友留言

立即登入留言