LoginSignup
1
0

More than 5 years have passed since last update.

nvidia-dockerをremoteから呼び出す.

Posted at

やりたいこと: 手元のPCからGPUが刺さっているPC上で動くnvidia-dockerを起動する(sshは表向き使わない).
記事を書いた動機: 言語を問わず,これ!という情報がなかったのでまとめてみました.

事前準備

設定ファイルの書き換え

注意として,nvidia-dockerにリモート接続する場合には,dockerにも接続する必要があります.
- docker用のポートは2375
- nvidia-docker用のポートは3476
それぞれで,上記のポートをtcpでlistenさせるための設定が必要です.

dockerにremoteから接続するための書き換え

GPUが刺さっているPC(以下,ホスト)上で /lib/systemd/system/docker.service のExecStartを書き換える

#ExecStart=/usr/bin/dockerd -H fd:// 
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// 

nvidia-dockerに3476ポートをlistenさせるための設定

ホスト上で /lib/systemd/system/nvidia-docker.service のExecStartを書き換える

#ExecStart=/usr/bin/nvidia-docker-plugin -s $SOCK_DIR
ExecStart=/usr/bin/nvidia-docker-plugin -l :3476 -s $SOCK_DIR 

サービスの再起動とテスト

ホストのipアドレスを10.X.X.Xとしているので,これは環境にあわせて書き換える.

sudo systemctl daemon-reload
sudo systemctl restart docker 
sudo DOCKER_HOST='10.X.X.X:' docker run hello-world
sudo systemctl restart nvidia-docker 
sudo DOCKER_HOST='10.X.X.X:'  nvidia-docker run --rm nvidia/cuda nvidia-smi

おまけ(proxyまわり)

もし,クライアントPCとホストの両方がプロキシの内側にある場合には,http_proxyなどの変数が設定されてしまっていて接続できなくなるかもしれない.この場合は,DOCKER_HOSTの他に 変数no_proxyも設定すれば良い.

sudo no_proxy='10.X.X.X' DOCKER_HOST='10.X.X.X:' docker run hello-world
sudo no_proxy='10.X.X.X' DOCKER_HOST='10.X.X.X:'  nvidia-docker run --rm nvidia/cuda nvidia-smi

いつも同じホストに繋ぐなら,aliasを仕掛けておくのが吉かと.

1
0
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
1
0