LoginSignup
7
6

More than 3 years have passed since last update.

Dockerで計算用途で使うときのオプションのまとめ

Posted at

Dockerでよく計算をすることがあるので、その時に使うオプションをまとめます。

GPUを使うとき

--gpus=<number>でGPUの個数を指定する。
使うGPUのIDは環境変数NVIDIA_VISIBLE_DEVICES0,1allなどと指定する。

NVIDIA_DRIVER_CAPABILITIESについて

使いたい機能に応じて環境変数を指定する必要がある。デフォルトではnvidia-smiやNVMLが使えるutilityのみ。カンマ区切りで複数指定可能。

Supported driver capabilities(https://github.com/NVIDIA/nvidia-container-runtime/blob/master/README.md より)

  • compute: required for CUDA and OpenCL applications.
  • compat32: required for running 32-bit applications.
  • graphics: required for running OpenGL and Vulkan applications.
  • utility: required for using nvidia-smi and NVML.
  • video: required for using the Video Codec SDK.
  • display: required for leveraging X11 display.

シェルを起動しているUserを引き継いで実行したいとき

nfsマウント等していて、特にユーザを一致する必要があるときに使います。
-v /etc/group:/etc/group:ro -v /etc/passwd:/etc/passwd:ro -u $(id -u $USER):$(id -g $USER)を使う。

GUIを使いたいとき

-e DISPLAY=$DISPLAY --net host -v /tmp/.X11-unix:/tmp/.X11-unix:ro -v $HOME/.Xauthority:/root/.Xauthority:ro
(GUI周りはsshからX11 forwardingをしたほうがいいかも。今は面倒屋なので直接シェルを使っています)

ホームディレクトリをバインドマウントしたいとき

-v $HOME:$HOMEを使う。

共有メモリの上限を増やすとき

特にGPUを使うアプリケーションでは共有メモリが足りなくなりがち。[size]には16gなどと指定する。
--shm-size=[size]

シェルをその場で使いたいとき

-itをつけるとシェルが使える。

よく使う組はエイリアスはっちゃえ!

  • ユーザの設定
  • X11のディスプレイの設定
  • ホームディレクトリと共有NASのマウント設定
  • 共有メモリの設定(16g)
  • シェル

をまとめておきます。

alias docker-run-it="sudo docker run -v /etc/group:/etc/group:ro -v /etc/passwd:/etc/passwd:ro -u $(id -u $USER):$(id -g $USER)  -e DISPLAY=$DISPLAY --net host -v /tmp/.X11-unix:/tmp/.X11-unix:ro -v $HOME/.Xauthority:/root/.Xauthority:ro -v /data02/$USER/:/data02/$USER -v $HOME:$HOME:Z  --shm-size 16g -it"

こんなことになるくらいならsingularityとかも使ってみたいですね。もっと簡単になってルート権限も不要らしい。

7
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
6