2020.10.15: TensorFlowがgpuじゃなかったので修正。画像のミスを追記。docker pruneを追記。
(画像内のミス)
誤 「docker run --gpus all --rm nvidia-smi」
正「docker run --gpus all --rm nvidia/cuda nvidia-smi」
Docker、何度やってもコマンド周りが覚えられないのでメモ代わりにチートシートを作成しています。 とにかくDockerは手順が多く、各コマンドごとの引数も多めなので、メモらないとやってられないです。
Dockerは需要の高いツールなので、Qiitaとか探せばコマンド集は色々あるのですが、流れ作業的に見返せる図が欲しかったのでこんな感じになってます。
OSにはそこまで依存しないと思いますが、Ubuntu 18.04 LTS を想定しています。
書ききれなかったこと
できるだけ簡潔なグラフにしたかったので、とりあえずDraw.ioで作ったのですが、色々と抜けてしまっていたので補足します。
ターミナルの$マークは抜いてます。そのほうがコピペしやすいので。
sudo 関係(最初はsudoを入れてるのに途中から無くなってる)
sudo usermod -aG docker {ユーザー名}
↑のコマンドでsudoを打つ必要がなくなります。
Dockerのインストール
完全に公式ドキュメントの丸コピで動きます。
(1) 旧バージョンの削除
sudo apt-get remove docker docker-engine docker.io containerd runc
(2) インストールの準備
sudo apt-get update sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common # GPG Key の追加。公開鍵の追加 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88
(3) Stable版のインストール
sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io
nvidia container toolkit のインストール
昔のnvidia-docker、nvidia-docker2が進化してこれになったっぽいです。
以下の記事が優秀です。
なぜか公式ドキュメントが更新されて、この時の情報と異なっているのですが、おそらく昔(2019年)のインストール方法のほうが良いんじゃないかと思います。
以下使う部分のみ↑から引用したものです。
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit sudo systemctl restart docker
その他
最新のコンテナを削除(多分もっと良い書き方がある)
docker ps -a | awk 'NR==2' | awk '{print $1}' | xargs docker rm
全コンテナ削除
docker rm -f `docker ps -a -q`
いらないものを消す
docker container prune docker image prune
プロセスチェック
docker ps -a
シンプルなDockerfile (TensorFlowベース)
FROM tensorflow/tensorflow:latest-gpu LABEL maintainer="p-geon" LABEL version="0.1" RUN apt-get update && apt-get install -y --no-install-recommends \ 使うライブラリ1 \ 使うライブラリ2 \ ... \ 使うライブラリn # finish settings WORKDIR /work ENTRYPOINT ["/bin/bash"]
まだまだDocker初心者なので、もう少しスキルアップしたら更新します。