Dockerを使いましょう
Docker知らないからってこのページを閉じようとしたあなた。多分想像以上に環境構築簡単なのでご安心を。Dockerさえ入ってしまえばLinuxのOSやversionが関係ないのがDockerの強みです。
背景
私事ながら、Geforce RTX3090を手に入れたのですが、今までのcudaの導入方法だと一向に認識されず、1週間溶かしまして絶望していたのですが、Dockerを使えば一瞬でしたので同じように悩んでる人に向けてそれを共有したいと思いました。
環境
- Ubuntu 18.04(GPUが接続されているLinuxならDockerさえ入ればなんでもいい)
やり方
1. Dockerのインストール
たくさんの記事があるので割愛。
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04-ja
などを参照。
2. 使いたいDocker imageを探す
Docker hubで使いたいDockerイメージを探します。色々ありますがとりあえずcudaが使いたい人はnvidia/cudaの最新のものにしましょう。base
, runtime
, devel
とありますが、特にこだわりがなければdevel
を選択するのが良いでしょう。(devel
にしかないコマンドがある)
base: 事前ビルドされたCUDAアプリケーションを展開するための最小構成のイメージ。CUDA Toolkit 9.0以降のみ。
runtime: CUDA toolkitから全ての共有ライブラリを追加したCUDA実行用のイメージ。
devel: 共有ライブラリだけでなくコンパイラーチェーン、デバッグ用ツール、スタティックライブラリなどが追加されたCUDA開発用のイメージ。
https://www.atmarkit.co.jp/ait/articles/1804/18/news141_3.html
以下で用いるDockerイメージはnvidia/cuda:11.2.0-runtime-ubuntu20.04
とします。
(ちなみにコロンの前のnvidia/cuda
をREPOSITORY
, コロンの後の11.2.0-runtime-ubuntu20.04
をTAG
といいます)
3. Docker pull
個人的にはGit
でいうgit clone
という理解をしています。使いたいDockerイメージをローカルに作成します。今回はnvidia/cuda:11.2.0-runtime-ubuntu20.04
を用いるので、
docker pull nvidia/cuda::11.2.0-runtime-ubuntu20.04
となります。docker pull
は時間がかかるので気長に待ちましょう。
4. コンテナを生成、起動
dockerイメージのコピーであるコンテナを生成し、その中に入っちゃいます。
docker run -it nvidia/cuda::11.2.0-runtime-ubuntu20.04
すると、謎の場所に連れて行かれると思います
[root@4ae03cb199f4 /]#
これで起動成功です。ここはcudaの入ったubuntu20.04の世界になっています。
あとはこの中でいつも通り環境を構築していきましょう。(僕はanaconda
を入れました)もし何か失敗してしまってもコンテナを消してまた1から作ればOKです。ホストOSが汚染されることはありません。
Dockerの使い方について
ちなみに上の方法をそのままやったところでろホストOSのディレクトリは覗けませんし、ipアドレスが繋がってないのでサーバーを立てることもできません。ここからどうカスタマイズしていくかは使う人にかかってきます。ぜひ色々と調べてみてください。(私も絶賛Docker勉強中であります)
例えばanaconda
を使うなら、-v
で接続するディレクトリを決めて-p
でポート番号を指定したりするとコンテナ内の環境でホストのファイルの操作ができるようになります。
参考