GPUドライバがバグったのでGPUドライバを再インストールした。
そしたらGPU対応させていたDockerコンテナが起動できなくなったので、その対処を記録する。
環境
- PC: Ubuntu18.04
- GPU: RTX2080
- Docker: version 19.03.5
- コンテナ:
docker run -it --gpus all ...
で作ったコンテナ
GPU再インストール
既存のドライバ削除
sudo apt purge nvidia-* sudo apt purge cuda-* # あれば sudo apt autoremove
sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt update
GPUのドライバ候補表示
ubuntu-drivers devices
下みたいな候補一覧が出てくるのでnvidia-driver-***
のどれか好きなの選ぶ
vendor : NVIDIA Corporation driver : nvidia-driver-418-server - distro non-free driver : nvidia-driver-460-server - distro non-free driver : nvidia-driver-460 - third-party free driver : nvidia-driver-450-server - distro non-free driver : nvidia-driver-465 - third-party free recommended driver : xserver-xorg-video-nouveau - distro free builtin
ドライバインストール
sudo apt install nvidia-driver-460
インストール後、nvidia-smi
でエラーなく結果が教示されたらOK
Docker側の修正
GPU再インストール後にコンテナをstartで起動しようとすると以下のようなエラーが出て起動できなかった
Error response from daemon: could not select device driver "" with capabilities: [[gpu]]
nvidia-container-runtime
というパッケージを入れて再起動すると治るっぽい(参考)
まず、vimかなんかで以下のスクリプト(nvidia-container-runtime-script.shと名付ける)を作成
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \ sudo 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 | \ sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list sudo apt-get update
nvidia-container-runtime-script.shを実行&nvidia-container-runtime
インストール
sh nvidia-container-runtime-script.sh sudo apt-get install nvidia-container-runtime
dockerデーモンを再起動(もしくはPC再起動)
sudo systemctl restart docker
これでエラーなくコンテナを起動できるようになるはず