理由
多くの場合、Dockerを環境制御として使用して、サービスの実行時に環境の一貫性を確保します。
ただし、リソースと環境を同時に必要とするサービスを実行する必要がある場合があります。
例:テンソルフロー推論
コンテナからコンテナを作成するには、2つの方法があります。
方法1
Linuxdockerをコンテナーに接続します
概念:
Linux dockerサービスをコンテナーに直接送信して、直接呼び出すことができるようにします。
docker run hello-world -v /var/run/docker.sock:/var/run/docker.sock
単純なブルートフォースソリューション。
将来、クラウドk8sの下位サービスに変更する場合は、問題が発生します。
方法2DockerをDockerコンテナにインストールする
*これは、
Docker
apt update
apt installdocker.ioをインストールするためのベースコンテナとしてnvcr.io/nvidia/tensorflow:20.10-tf2-py3にインストールされます
nvidiaランタイムをインストールする
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を介してコールバックできます。
関連する設定の調整
コンテナにはsystemctlがないため、一部のパラメータは手動で調整する必要があります。
/etc/docker/daemon.jsonで変更します。
{
"storage-driver":"vfs"
,"runtimes":{
"nvidia":{
"path":"nvidia-container-runtime",
"runtimeArgs":[]
}
}
}
vfsのコンテナで使用されるハードディスクフォーマットはLinux環境とは異なるため、
ランタイムを調整する必要があり、nvidiaランタイムはインストール後に自動的にインストールできず、手動で調整する必要があります
Dockerデーモンを手動で起動します
dockerd &
テスト環境が実行可能かどうか
内部コンテナーがスムーズに実行されるかどうかをテストします
dockerrun hello-world
内部コンテナがgpuリソース
dockerrunにアクセスできるかどうかをテストします--runtime = nvidia nvcr.io/nvidia/tensorflow:20.10-tf2-py3 nvidia-smi