Docker コンテナが起動できない、Nvidia ドライバー関連の問題
1. 特定のエラー報告
Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: process_linux.go:545: container init caused: Running hook #0:: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown
Error: failed to start containers: xxxxxxxxx
xxx@xxx:~$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
2. 問題分析
コンテナーは Nvidia グラフィック カード ドライバーに依存しており、ドライバーが壊れています。
余談: クライアントのサーバーは長年にわたってインターネットに接続されており、グラフィック カード ドライバーは過去数か月間で複数回切断されています。調査の理由は、Linux/Ubuntu カーネルが自動的に更新されるためです。ドライバーが無効であるため、ドライバーを再インストールすることで解決できる場合が多いですが、更新によってグラフィック カード ドライバーが失敗する可能性があります。
3. 解決策
カーネルの自動アップデートをオフにし、
以下の 2 つの設定ファイルの値をすべて「0」に変更し、保存して再起動します
xxxx@xxxx:/xxxxxx/xxxxxxxxxxx/xxxxx$ uname -r
5.15.0-58-generic
xxxx@xxxx:/xxxxxx/xxxxxxxxxxx/xxxxx$ cat /etc/apt/apt.conf.d/10periodic
#把下面值全改为“0”
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Download-Upgradeable-Packages "0";
APT::Periodic::AutocleanInterval "0";
xxxx@xxxx:/xxxxxx/xxxxxxxxxxx/xxxxx$ cat /etc/apt/apt.conf.d/20auto-upgrades
#把下面值全改为“0”
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
xxxx@xxxx:/xxxxxx/xxxxxxxxxxx/xxxxx$ sudo vim /etc/apt/apt.conf.d/10periodic
xxxx@xxxx:/xxxxxx/xxxxxxxxxxx/xxxxx$ sudo vim /etc/apt/apt.conf.d/20auto-upgrades
xxxx@xxxx:/xxxxxx/xxxxxxxxxxx/xxxxx$ sudo reboot -i
次に、ドライバーを再インストールします。インストール後、コンテナーは起動でき、nvidia-smi はコンテナーの外では使用できますが、コンテナー内では動作せず、プログラムが実行できないことがわかりました。
RuntimeError: No CUDA GPUs are available
(xxxxai) root@xxxxxx:/workspace/projects/xxxxx/xxxxai/xxxxx# nvidia-smi
No devices were found
Dockerサービスを再起動します
systemctl restart docker
OK、うまくいきます!
偉い人は「dkms オプションを備えたドライバーをインストールできる」と言っていますが、私はそれをテストしていません。それを参照することもできます: https://blog.csdn.net/wtlll/article/details/126541686