hans

hans

【Docker】Ubuntu 14.04イメージにGPUドライバ、CUDA、およびCUDNNをインストールする


最初に注意すべき問題を先に書いておきます。

以前、会社でこれをインストールしようとしていましたが、うまくいかず、nvidia-smi で GPU 情報を取得できず、ドライバとライブラリのバージョンが一致しないというエラーが表示されました。

後で問題の原因を見つけました。

ホストマシンの GPU ドライバのバージョンをコンテナの GPU ドライバのバージョンと一致させる必要があります!!!

1. ubuntu 14.04 イメージを pull する

sudo docker pull ubuntu:14.04

2. nvidia-docker をインストールする(このステップは必須ではありませんが、行った場合、nvidia-docker コマンドを使用して起動できるようになります。行わない場合、第 3 ステップの --privileged コマンドでも GPU を呼び出すことができます)

アドレス:https://github.com/NVIDIA/nvidia-docker

wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker_1.0.1-1_amd64.deb
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
nvidia-docker run --rm nvidia/cuda nvidia-smi

3. コンテナを作成し、ubuntu イメージに入り、本当の root 権限を持つ

docker run -it --privileged=true ubuntu:14.04

ここで privileged パラメータの機能について説明します。true に設定すると、docker の root に本当の root 権限を与えることができ、ホストマシンのハードウェアなどを呼び出すことができます。また、docker 内で docker を使用することもできます。

4. 新しいターミナルを開き、準備した cuda インストールパッケージと cudnn 圧縮パッケージをコンテナにコピーする

docker ps
docker cp cuda.deb {@CONTAINER ID}:/root/
docker cp cudnn.tgz {@CONTAINER ID}:/root/

5. コンテナのターミナルに戻り、以下の記事の中間部分の手順に従って CUDA と CUDNN をインストールする

【Caffe】Caffe,CUDA,cuDNN インストールガイド、およびさまざまな問題の解決策(Ubuntu14.04)

6. 変更を新しいイメージに保存する

exit #コンテナを終了する
docker ps -a #コンテナIDの先頭4桁を確認する
docker commit xxxx ubuntu:gpu

7. アップロードしたイメージ:

docker pull renhanchi/ubuntu

このイメージは、ubuntu14.04 をベースにしており、以下を主にインストールしています:

nvidia:375.66

CUDA:8.0

CUDNN:5.1

caffe

tensorflow-gpu:1.1

必ず上記の第 3 ステップのコマンドを使用してイメージを実行することを忘れないでください!

8. ローカルイメージを保存する

docker save imageID > filename
docker load < filename

docker export containID > filename
docker import - filename

第 1 の方法は、イメージ保存に操作履歴が保存され、過去のバージョンに戻すことができます。

第 2 の方法は、コンテナに保存されたイメージは操作履歴が保存されないため、ファイルサイズが小さくなります。

第 2 の方法で第 3 ステップのコマンドを実行すると、システムに入ることができない場合があります。

エラーメッセージ:docker: Error response from daemon: No command specified.

以下のコマンドを使用することもできます。

docker run -it --privileged=true ubuntu:container /bin/bash
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。