概要
Windows11搭載のPCにおいて,docker compose
でPython + Tensorflow の環境(コンテナ1つ)を作るときの手順です.
私の場合オリジナルのデータセットをすべて外付けSSDに入れており,ドライブをマウントする必要があるのでそれも手順に加えました.
環境
- Windows11
- WSL2
- Docker Desktop 4.26.1
(追記:2023/12/29)Windows11 に Docker をインストールする方法はこの記事にまとめました.
手順
ドライブのマウント
[D:]
は外付けドライブのパス.パソコンによって違うためエクスプローラーから確認.
sudo mkdir /mnt/usb1
sudo mount -t drvfs [D:] /mnt/usb1
マウントできているか確認
df -h
実行して,以下のようにD:
が表示されていれば成功!
Filesystem Size Used Avail Use% Mounted on
none 3.8G 4.0K 3.8G 1% /mnt/wsl
none 953G 267G 687G 28% /usr/lib/wsl/drivers
/dev/sdc 1007G 1.8G 954G 1% /
.
.
.
D: 954G 30G 925G 4% /mnt/usb1
docker-compose.yml
の作成
ディレクトリ構成.ワーキングディレクトリの直下に作成
workdir
├── src
├── Dockerfile (今回は使わなかった)
├── docker-compose.yml
└── etc.
docker-compose.yml
の中身.
services:
dk_ml:
image: tensorflow/tensorflow:2.13.0rc0-gpu
# build: .
volumes: # ボリュームマウント
- /mnt/usb1/vanguard:/mnt
- .:/app
ports: # portの公開
- "6006:6006"
deploy: # GPUの利用
resources:
reservations:
devices:
- capabilities: [gpu]
shm_size: "256mb"
tty: true
portは Tensorboard 用に公開.GPUを利用できるようにするのが手間取りました.docker run
なら引数に--gpus=all
を加えるだけだったので,複数行使うのが少し煩雑に感じました.
また,tty: true
を入れないと,コンテナが終了してしまいました.こちらのサイトを参考にしました.
docker-compose で exit with status 0 の解決法
コンテナの作成
WSLのターミナルから以下のコマンドを実行.
cd workdir
docker compose up -d
これでコンテナが作成されたので,あとはVSCodeからAttachすれば完了!
動いているサービスを確認するコマンドは以下
docker compose ps
サービスの停止
docker compose stop
サービスの開始
docker compose start
(比較)docker run
を使う場合
今まではdocker compose
を使わずにdocker run
でコンテナを作成してました.
docker run -it \
-v /mnt/usb1:/mnt \
-v $PWD:/app \
-p 6006:6006 \
--gpus all \
--shm-size 256m \
--name dk_ml \
tensorflow/tensorflow:2.13.0rc0-gpu bash
コンテナを作成する毎に上のコマンドを打ってたので結構大変で,間違えて入力してしまうこともしばしば,,,
docker compose
を使えば yml を作るだけでコマンドで楽できてありがたい.
でも yml 作るのはそれなりに手間なので,コンテナ1つだけなら結局どっちがいいのでしょうか?
参考
以下のサイトを参考にさせていただきました(参照日はいずれも2023/12/28).