Translate

2026年7月8日水曜日

Google Colab相当の環境をローカルPC上のDocker Composeで実現する

 Docker Composeの有料版に、お金を払いたくない ^H^Hが使えない ため古いゲーミングPC(GeForce3080)にDocker Composeを入れてその上のコンテナでGoogle Colab相当のノート操作ができないかためしてみた:

コンテナイメージとして asia-docker.pkg.dev/colab-images を使用するが、このままだとJupyter Lab画面がないので Dockerfileを以下のように作成した。

FROM asia-docker.pkg.dev/colab-images/public/runtime:latest

# google-colab pins jupyter-server==2.14.0, so jupyterlab is pinned to a
# version that still supports it (newer jupyterlab needs jupyter-server>=2.19).
RUN pip install --no-cache-dir 'jupyterlab==4.2.7' 'jupyter-server==2.14.0' \
    && jupyter server extension enable jupyterlab 

 ※バージョンを変えたい場合は適宜修正のこと

そしてdocker-compose.ymlでは以下の様の上のDockerfileからイメージを作成するようにした。

 

services:
  colab-runtime:
    build:
      context: .
      dockerfile: Dockerfile
    image: colab-gpu-runtime-jupyterlab:latest
    container_name: colab-gpu-runtime
    ports:
      - "0.0.0.0:9000:8080"   # colab.research.google.com からの接続用(将来SSHトンネル等で使う場合に残す)
      - "0.0.0.0:8888:9000"   # LAN内から直接ブラウザでアクセスする用(Colab相当・完全ローカル)
    volumes:
      - ./workspace:/content/workspace
    environment:
      COLAB_JUPYTER_IP: 0.0.0.0
      COLAB_JUPYTER_ALLOW_REMOTE_ACCESS: "true"
      COLAB_JUPYTER_TOKEN: ${COLAB_JUPYTER_TOKEN:-change-this-token}
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    restart: unless-stopped

 

ためしていないけど、latestをColab環境バージョンにあわせたタグを指定すれば、該当バージョンのコンテナになる..かな? 

 上の定義にある通り、docker-compose.ymlとおなじディレクトリには、先のDockerfileとworkspaceフォルダを作成しておく。

あと、UIにアクセスする際のトークン文字列を環境変数COLAB_JUPYTER_TOKENに設定する。docker composeコマンドはカレントの.envを読んでくれるので、.envファイルをたとえば以下のように定義する。

 COLAB_JUPYTER_TOKEN=my-token-hogehoge 

Jupyter Lab画面を開くには http://IPアドレス:8888/lab?token=my-token-hogehoge をブラウザで開けば良い。

ひとつ..残念なことが1点。

実はGoogle Colab画面を開いて右上の逆三角形を押し「ローカルランタイムに接続」でこのURLをトークン入れればつながるかな..とおもっていたのですが、ホスト名がlocalhostでないと受け付けない仕様になっていてできませんでした。有効なバックエンドURLを入力して..だって..

 

 

...9000ポート用意したのですが...別のPC上のブラウザ操作からは、今のところ手がありません(Port Fowardしたら、IPになっちゃうだろうし..)

 

上記の設定ではJupyter Lab画面からColab相当の環境をつかうことで、aptやpipの環境が野良Jupyterで変わらないようにする使い方くらいしか..

研修とかだと古いColabバージョン前提のnotebookファイルなんかがあるから、それには使えるかも.. 

 

 

 

 

 

Google Colab相当の環境をローカルPC上のDocker Composeで実現する

 Docker Composeの有料版に、お金を払いたくない ^H^Hが使えない ため古いゲーミングPC(GeForce3080)にDocker Composeを入れてその上のコンテナでGoogle Colab相当のノート操作ができないかためしてみた: コンテナイメージとして a...