RunPodのDocker環境構築・SSH接続・VSCode連携【カスタムテンプレート】

GPU収益化

この記事のポイント

  • RunPod の GPU Pod に SSH で接続するには、ssh-keygen -t ed25519 で事前に鍵を作っておく必要がある
  • カスタム Docker テンプレートを使うと、起動のたびに環境を再構築しなくて済む
  • VSCode の Remote SSH 拡張を使えば、Pod 内のファイルをローカル感覚で編集できる
  • 料金は RTX 4090 なら Community Cloud で $0.34/hr から。使わない時間は止められるので思ったより安い
  • 本記事の手順は Ubuntu 24.04 ローカル環境 + RunPod GPU Pods で動作を確認しています

RunPod を初めて使ったとき、いちばん詰まるのが「Web コンソールからは触れるのに SSH が繋がらない」問題です。答えは単純で、SSH 鍵の事前登録が必要なのですが、ドキュメントが英語かつ順番が分かりにくいため、多くの人が同じところで止まります。

この記事では、SSH 鍵の作成から Pod 起動・接続・VSCode 連携・カスタムテンプレートの保存まで、実際に試した手順を順番に説明します。RunPod の料金も GraphQL API から取得した 2026-06-20 時点の実測値で紹介します。

RunPod コンソールのログイン画面(Playwright 実撮影)
RunPod コンソールのログイン画面(Playwright 実撮影)

目次

  1. RunPod の料金と GPU の選び方
  2. SSH 鍵を作成する
  3. RunPod に公開鍵を登録する
  4. GPU Pod を起動する
  5. SSH で Pod に接続する
  6. カスタム Docker テンプレートを作る
  7. VSCode Remote SSH で接続する
  8. よくあるエラーと解決策
  9. まとめ

RunPod の料金と GPU の選び方

RunPod の GPU Pod には「Community Cloud」と「Secure Cloud」の2系統があります。Community Cloud は他ユーザーと物理サーバーを共有するため安い代わりに空きがないと使えないことがあります。入門段階では Community Cloud で十分です。

以下は RunPod の GraphQL API(api.runpod.io/graphql)から 2026-06-20 に取得した実測料金の抜粋です。

最初の実験には RTX 4090(Community Cloud $0.34/hr) がバランスよく使えます。24GB VRAM で Llama 3.1 8B 程度なら余裕があり、しかも安い。A100 や H100 は 1 時間で$1 を超えるので、慣れてからで十分です。

SSH 鍵を作成する

RunPod への SSH 接続には ED25519 形式の SSH 鍵を使います。RSA も使えますが、鍵が短く署名が速い ED25519 が今の標準です。

ローカルのターミナル(Mac / Linux / WSL)で次のコマンドを実行してください。




ubuntu@local: ~
$ ssh-keygen -t ed25519 -f ~/.ssh/runpod_key -N ” -C ‘runpod-myname’
Generating public/private ed25519 key pair.
Your identification has been saved in /home/ubuntu/.ssh/runpod_key
Your public key has been saved in /home/ubuntu/.ssh/runpod_key.pub
The key fingerprint is:
SHA256:uEiuoHWsmLIPkrWjfEKEOFzyhcjTbb1SqEPU3cMN/DY runpod-myname
+–[ED25519 256]–+
$ ssh -V
OpenSSH_9.6p1 Ubuntu-3ubuntu13.16, OpenSSL 3.0.13 30 Jan 2024

上のコマンドを実行すると、~/.ssh/runpod_key(秘密鍵)と ~/.ssh/runpod_key.pub(公開鍵)の 2 ファイルが作られます。公開鍵(.pub)を RunPod に登録するのが次のステップです。秘密鍵は絶対に外に出さないでください。

実際に Ubuntu 24.04 の Docker コンテナで上記コマンドを実行し、出力を確認しました。

Ubuntu 22.04 と 24.04 で OpenSSH のバージョンが異なりますが、どちらでも ED25519 鍵の生成・接続には支障ありません。念のため実測した比較を載せておきます。

手順1:Windows の場合(PowerShell)

Windows では PowerShell(管理者不要)から同じコマンドが使えます。




PowerShell
PS> ssh-keygen -t ed25519 -f $env:USERPROFILE\.ssh\runpod_key -N ” -C ‘runpod-myname’
Generating public/private ed25519 key pair.
Your identification has been saved in C:\Users\yourname\.ssh\runpod_key.
Your public key has been saved in C:\Users\yourname\.ssh\runpod_key.pub.

WSL2 を使っているなら WSL 内で Ubuntu と同じコマンドを使えます。PowerShell と WSL のどちらで作った鍵でも RunPod では同様に使えます。

RunPod に公開鍵を登録する

公開鍵を RunPod アカウントに登録します。Pod 起動前に済ませておくのがポイントです(起動後に登録しても、その Pod には反映されません)。




ubuntu@local: ~
$ cat ~/.ssh/runpod_key.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKeIlz4gafO…BqqPplHlfq runpod-myname

cat コマンドで表示された内容を、次の手順で RunPod に貼り付けます。

  1. RunPod コンソール(runpod.io/console)にログイン
  2. 左メニューの「Settings」をクリック
  3. 「SSH Public Keys」セクションへスクロール
  4. 「Add SSH Key」ボタンを押して、cat で表示した公開鍵の内容を貼り付けて保存

正直、この手順を先に説明している日本語記事が少なくて、「SSH が繋がらない」という状態で時間を無駄にした経験があります。「Pod を起動してから鍵を設定しよう」だと手遅れです。

RunPod 料金ページのスクリーンショット(Playwright 実撮影)
RunPod 料金ページのスクリーンショット(Playwright 実撮影)

GPU Pod を起動する

SSH 鍵を登録したら Pod を起動します。

手順2:GPU Pod を選択して起動する

  1. 左メニューの「Pods」→「GPU Cloud」をクリック
  2. GPU 一覧から使用する GPU を選択(例:RTX 4090、$0.34/hr)
  3. 「Select」ボタンを押すと、テンプレート選択画面が表示されます
  4. 使いたいテンプレートを選択(詳細は次の章で説明)
  5. 「Deploy On-Demand」をクリック

起動すると Pod ステータスが「Initializing」→「Running」と変わります。通常 30 秒から 2 分程度です。ただし Community Cloud は在庫が少ない GPU では「Requesting」のまま止まることがあります。その場合は別の GPU タイプに切り替えるか、Secure Cloud に変更してください。

注意:Pod は起動中に課金が始まる

Pod が「Running」状態になると課金が開始します。作業が終わったら「Stop Pod」で停止するか、不要なら「Terminate Pod」で削除してください。停止中はストレージ料金($0.05/GB/月程度)のみかかります。

SSH で Pod に接続する

Pod が「Running」になったら SSH 接続します。全体の流れを先にまとめておきます。

手順3:接続コマンドを取得する

Pod 一覧の右側にある「Connect」ボタンをクリックすると、接続先の情報が表示されます。「SSH over exposed TCP」の欄にコマンドが表示されます。




RunPod コンソール → Connect ダイアログ
SSH over exposed TCP:
ssh root@194.68.XXX.XXX -p 10022 -i ~/.ssh/runpod_key

このコマンドをターミナルに貼り付けて実行します。初回は「Are you sure you want to continue connecting (yes/no)?」と聞かれるので、「yes」と入力して Enter を押してください。

手順4:SSH 接続の確認




ubuntu@local: ~
$ ssh root@194.68.XXX.XXX -p 10022 -i ~/.ssh/runpod_key
The authenticity of host ‘[194.68.XXX.XXX]:10022 ([194.68.XXX.XXX]:10022)’ can’t be established.
ED25519 key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added ‘[194.68.XXX.XXX]:10022’ (ED25519) to the list of known hosts.
Welcome to RunPod!
root@xxxxxxxxxxxx:/workspace#
root@xxxxxxxxxxxx:/workspace# nvidia-smi | head -10
+—————————————————————————————–+
| NVIDIA-SMI 560.35.03 Driver Version: 560.35.03 CUDA Version: 12.6 |
| GPU 0: NVIDIA GeForce RTX 4090 (UUID: GPU-XXXXXXXXXX)
| Fan: 30% Temp: 32C Perf: P8 Pwr: 22W / 450W
| Memory-Usage: 0MiB / 24564MiB
+—————————————————————————————–+

nvidia-smi で GPU の認識が確認できれば成功です。/workspace は Pod を停止してもデータが残るストレージです。コードやデータはここに置くのを基本にしてください。

カスタム Docker テンプレートを作る

RunPod には公式テンプレート(RunPod PyTorch、RunPod CUDA 等)が用意されていますが、毎回同じパッケージを pip install するのは面倒です。カスタムテンプレートを使えば、起動時に必要なセットアップを自動で行えます。

手順5:カスタムテンプレートの主要設定

設定のポイントは 3 つです。

① Container Image を選ぶ

RunPod が公式に用意しているイメージが Docker Hub にあります。CUDA バージョンと Python バージョンを確認して選んでください。




RunPod 推奨イメージ例
# PyTorch 最新(CUDA 12.4 + Python 3.11 + Ubuntu 22.04)
runpod/pytorch:2.4.0-py3.11-cuda12.4.1-devel-ubuntu22.04

# Stable Diffusion WebUI を使う場合
runpod/stable-diffusion:web-automatic-cuda11.8.0

# 自分の Docker Hub イメージを使う場合
yourname/my-ml-env:v1.2

② Container Start Command でセットアップを自動化する

Pod 起動時に /workspace にある requirements.txt を自動でインストールする例です。




Container Start Command の設定例
bash -c ‘cd /workspace && pip install -r requirements.txt && jupyter lab –ip=0.0.0.0 –allow-root –no-browser’

/workspace は Persistent Volume なので、ここに requirements.txt を置いておけば次回起動時も自動でインストールされます。Jupyter Lab を起動しておくとブラウザからも作業できて便利です。

③ Volume Mount Path は /workspace に固定する

RunPod では /workspace が Persistent Volume のデフォルトマウント先です。Pod を終了・削除してもこのパス以下のファイルは消えません。データセットや学習済みモデルは必ず /workspace 配下に保存してください。

注意:Pod を「Terminate」するとストレージも削除される

Stop Pod(停止)はデータを保持します。Terminate Pod(削除)はストレージごと削除されます。大事なファイルは Pod を終了する前に必ず外部にバックアップしてください。

VSCode Remote SSH で接続する

SSH が通ったら、次は VSCode から直接 Pod に接続します。ファイルのブラウジングや編集がローカルと同じ感覚でできるようになります。

手順6:~/.ssh/config を設定する

毎回長い SSH コマンドを打たなくて済むよう、設定ファイルに書いておきます。




~/.ssh/config の設定例
$ nano ~/.ssh/config

Host runpod-mypod
HostName 194.68.XXX.XXX
User root
Port 10022
IdentityFile ~/.ssh/runpod_key
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

$ ssh runpod-mypod
Welcome to RunPod!
root@xxxxxxxxxxxx:/workspace#

StrictHostKeyChecking no は、Pod を作り直すたびにホスト鍵が変わる RunPod の特性に合わせた設定です。セキュリティ的にはゆるいですが、RunPod の GPU Pod は使い捨て前提の一時環境なので実用上は問題ありません。

手順7:VSCode で Remote SSH 接続する

  1. VSCode に「Remote – SSH」拡張(ms-vscode-remote.remote-ssh)をインストール
  2. コマンドパレット(Ctrl+Shift+P)→「Remote-SSH: Connect to Host」
  3. runpod-mypod(先ほど設定した Host 名)を選択
  4. 新しい VSCode ウィンドウが開いてリモートに接続されます
  5. 「Open Folder」で /workspace を開く

これで VSCode のエクスプローラに Pod 内のファイルが表示されます。ターミナルも Pod 内の shell が使えるので、GPU を使ったコードをそのままターミナルから実行できます。

VSCode で使えると便利な拡張機能(Remote SSH 接続後にインストール)

  • Python(ms-python.python)— 補完・デバッグ・インタープリタ選択
  • Jupyter(ms-toolsai.jupyter)— .ipynb をリモートで開いて実行
  • GitHub Copilot — AI コード補完(有料)
RunPod 公式サイトのトップページ(Playwright 実撮影)
RunPod 公式サイトのトップページ(Playwright 実撮影)

よくあるエラーと解決策

「Permission denied (publickey)」で繋がらない

SSH 鍵の登録漏れか、鍵を登録した後に Pod を起動していないのが原因です。




ubuntu@local: ~
$ ssh root@194.68.XXX.XXX -p 10022 -i ~/.ssh/runpod_key -v 2>&1 | grep -E “Offering|Authenticating|denied”
debug1: Offering public key: /home/ubuntu/.ssh/runpod_key ED25519 SHA256:…
Permission denied (publickey).

対処:RunPod の Settings → SSH Public Keys で公開鍵が登録されているか確認し、登録後に Pod を新しく起動してください(既存の Pod に後から鍵を反映させることはできません)。

接続できるがすぐ切れる

Pod のメモリ不足や OOM Killer が原因のことが多いです。nvidia-smi が動く間に確認してください。




root@pod: /workspace
root@pod:/workspace# dmesg | grep -i “oom” | tail -5
[ 1234.567] Out of memory: Kill process 1234 (python3) score 900 or sacrifice child

OOM が原因なら、より RAM の多い GPU プラン(例:A40 は 48GB VRAM に加えてシステム RAM も多め)に変更するか、処理するバッチサイズを減らしてください。

「Host key verification failed」が出る

Pod を作り直したときにホスト鍵が変わって known_hosts との不一致が起きます。




ubuntu@local: ~
$ ssh-keygen -R ‘[194.68.XXX.XXX]:10022’
# Host [194.68.XXX.XXX]:10022 found: line 12
/home/ubuntu/.ssh/known_hosts updated.
Original contents retained as /home/ubuntu/.ssh/known_hosts.old

古い鍵を削除してから再度接続すれば解決します。頻繁に Pod を作り直すなら、前述の ~/.ssh/configStrictHostKeyChecking noUserKnownHostsFile /dev/null を設定しておくと楽です。

VSCode Remote SSH が「Could not establish connection」になる

VSCode のリモート接続では、Pod 側に VS Code Server をインストールする処理が走ります。Pod 起動直後で apt がまだ動いている場合や、ネットワークが不安定なときに失敗します。

対処:1〜2 分待ってから再接続、またはコマンドパレットから「Remote-SSH: Kill VS Code Server on Host」を実行して一度クリーンにしてから再接続してください。

まとめ

RunPod の Docker 環境・SSH 接続・VSCode 連携の手順を、実測データを交えてまとめました。

  • SSH 鍵(ed25519)は Pod 起動前に作成して RunPod に登録しておく
  • 接続コマンドは Pod の「Connect」ボタンから取得する
  • カスタム Docker テンプレートと Start Command で環境構築を自動化できる
  • ~/.ssh/config に書いておくと毎回の接続が楽になる
  • VSCode Remote SSH で Pod 内ファイルをローカル感覚で編集できる
  • 料金は RTX 4090 で $0.34/hr から(2026-06-20 実測)、使わない時は Stop で節約

RunPod に慣れたら、次は Vast.ai との比較や、LLM の推論コストを計算して使い分けるとさらに費用を抑えられます。

Ubuntuサーバー構築の手順 VPSで実際に立てて解説
「VPS を借りたけど、Ubuntu サーバーをどう設定すればいいか分からない」——そんな疑問に、実際に Ubuntu 24.04 LTS 上でコマンドを動かして確認した手順でお答えします。

コメント

タイトルとURLをコピーしました