YOLO Vision 2026:

Ultralytics Dockerクイックスタートガイド#

Ultralytics Docker Package Visual

このガイドは、Ultralytics プロジェクト用の Docker 環境を構築するための包括的なイントロダクションです。Docker は、コンテナ内でアプリケーションを開発、出荷、および実行するためのプラットフォームです。デプロイ先に関わらず、ソフトウェアが常に同じように動作することを保証する上で特に有用です。詳細については、Docker Hub の Ultralytics Docker リポジトリをご覧ください。

Docker Image Version Docker Pulls

学習内容#

  • NVIDIAサポート付きDockerのセットアップ
  • Ultralytics Dockerイメージのインストール
  • CPUまたはGPUサポート環境でのDockerコンテナ内におけるUltralyticsの実行
  • Dockerでディスプレイサーバーを使用してUltralyticsの検出結果を表示する方法
  • ローカルディレクトリをコンテナにマウントする方法


Watch: How to Get started with Docker | Usage of Ultralytics Python Package inside Docker live demo 🎉

前提条件#

  • お使いのシステムに Docker がインストールされていることを確認してください。インストールされていない場合は、Docker のウェブサイトからダウンロードしてインストールできます。
  • GPU アクセラレーションを利用するには、システムに NVIDIA GPU と NVIDIA ドライバがインストールされていることを確認してください。CPU イメージでは NVIDIA ハードウェアは必要ありません。
  • NVIDIA Jetson デバイスを使用している場合は、適切な JetPack バージョンがインストールされていることを確認してください。詳細については、NVIDIA Jetson ガイドをご参照ください。

NVIDIAサポート付きDockerのセットアップ(オプション)#

まず、以下のコマンドを実行してNVIDIAドライバーが正しくインストールされていることを確認してください。

nvidia-smi

NVIDIA Container Toolkitのインストール#

それでは、Docker コンテナで GPU サポートを有効にするために NVIDIA Container Toolkit をインストールしましょう。

curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
  && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list \
  | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' \
    | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

パッケージリストを更新し、NVIDIA Container Toolkitをインストールします:

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

DockerでCDIデバイスを確認する#

nvidia-ctk cdi list を実行して、GPU CDI デバイスが利用可能であることを確認します(ツールキットの nvidia-cdi-refresh サービスは、ツールキット 1.18 以降で仕様を自動的に生成および維持します)。

nvidia-ctk cdi list

nvidia.com/gpu=0nvidia.com/gpu=all などのエントリが表示されます。検出された CDI デバイスは docker info にも表示されます。


Ultralytics Dockerイメージのインストール#

Ultralytics は以下のイメージを Docker Hub に公開しています。各イメージは、Docker 公開ワークフローによって、リンクされている Dockerfile からビルドされます。

タグプラットフォームと目的ソース
latestGPUトレーニングおよび推論用CUDA搭載Linux AMD64Dockerfile
latest-export変換およびベンチマーク用のCUDAおよびエクスポート依存関係搭載Linux AMD64Dockerfile-export
latest-pythonCPU推論用の軽量Linux AMD64 PythonイメージDockerfile-python
latest-python-exportエクスポート依存関係搭載Linux AMD64 CPUイメージDockerfile-python-export
latest-cpuBashをデフォルトコマンドとするLinux AMD64 CPUイメージDockerfile-cpu
latest-jupyterJupyterLabおよびUltralyticsチュートリアルノートブック搭載Linux AMD64 CPUイメージDockerfile-jupyter
latest-arm64Apple シリコン、Raspberry Pi、およびその他の ARM64 システム向けの Linux ARM64 CPU イメージDockerfile-arm64
latest-nvidia-arm64Jetson AGX Thor、DGX Spark、JetPack 7、DGX OS用のNVIDIA GPUサポート搭載Linux ARM64Dockerfile-nvidia-arm64
latest-jetson-jetpack6JetPack 6を実行するNVIDIA Jetsonデバイス向けのLinux ARM64Dockerfile-jetson-jetpack6
latest-jetson-jetpack5JetPack 5を実行するNVIDIA Jetsonデバイス向けのLinux ARM64Dockerfile-jetson-jetpack5
latest-jetson-jetpack4JetPack 4を実行するNVIDIA Jetsonデバイス向けのLinux ARM64Dockerfile-jetson-jetpack4
latest-runnerセルフホスト型GitHub Actions GPUランナー用Linux AMD64 CUDAイメージDockerfile-runner
latest-runner-cpuセルフホスト型GitHub Actions CPUランナー用Linux AMD64イメージDockerfile-runner-cpu

latest で始まるタグは、最近公開された main ブランチのビルドを追跡します。バージョン付きタグは、latest プレフィックスを VERSIONVERSION-cpuVERSION-jetson-jetpack6 などの Ultralytics リリースに置き換えます。再現性のある環境を作成するには、バージョン付きタグを使用してください。

最新のイメージをプルするには:

# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latest

Dockerコンテナ内でのUltralyticsの実行#

Ultralytics Dockerコンテナの実行方法は以下の通りです。

CPUのみを使用する場合#

# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpu

GPUを使用する場合#

# Run with all GPUs
sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest

# Run specifying which GPUs to use
sudo docker run -it --ipc=host --device nvidia.com/gpu=2 --device nvidia.com/gpu=3 ultralytics/ultralytics:latest

-it フラグは疑似 TTY を割り当てて標準入力を開いたままにし、コンテナと対話できるようにします。--ipc=host フラグはホストの IPC ネームスペースの共有を有効にし、プロセス間でメモリを共有するために不可欠です。--device nvidia.com/gpu=... フラグは、CDI を介してコンテナにホストの GPU へのアクセス権を付与します。

`--gpus all`の代わりにCDIを使用する

Linuxでは、CDIデバイスリクエストにDocker >= 28.2.0(CDIがデフォルトで有効)と、nvidia-container-toolkit >= 1.18(自動CDIスペック生成)が必要です。GPUコンテナを実行する前に、古いLinuxホストをアップグレードしてください。従来の--gpus allフラグは、ルーチンのパッケージアップデート中にホストがsystemdをリロードした際にGPUアクセスが失われる可能性があり(Failed to initialize NVML: Unknown Error)、(nvidia-container-toolkit#48)に記載されています。CDI --deviceリクエストにはコンテナ設定内のデバイスノードが含まれているため、トレーニングワーカーやCIランナーなどの長期実行コンテナは、リロード後もGPUアクセスを維持します。

Windows 上の Docker Desktop GPU サポートは、NVIDIA CDI デバイスがそこでは利用できないため、現在 WSL 2 バックエンドと共に --gpus all を使用しています。Windows は Linux systemd を使用しないため、上記のデーモンリロードの失敗は適用されません。

ファイルアクセシビリティに関する注意#

コンテナ内でローカルマシンのファイルを扱うには、Dockerボリュームを使用できます。

# Mount a local directory into the container
sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

/path/on/host をローカルマシンのディレクトリパスに置き換え、/path/in/container を Docker コンテナ内の希望するパスに置き換えてください。

トレーニング出力の保持#

トレーニング出力は、デフォルトでコンテナ内の /ultralytics/runs/<task>/<name>/ に保存されます。ホストディレクトリをマウントしないと、コンテナが削除されたときに出力が失われます。

トレーニング出力を保持するには:

# Recommended: mount workspace and specify project path
sudo docker run --rm -it -v "$(pwd)":/w -w /w ultralytics/ultralytics:latest \
  yolo train model=yolo26n.pt data=coco8.yaml project=/w/runs

これにより、すべてのトレーニング出力がホストマシンの ./runs に保存されます。

Dockerコンテナ内でグラフィカルユーザーインターフェース(GUI)アプリケーションを実行する#

非常に実験的な機能です - ユーザーが全リスクを負います

以下の手順は実験的なものです。X11 ソケットを Docker コンテナと共有すると、潜在的なセキュリティリスクが生じます。そのため、このソリューションは制御された環境でのみテストすることをお勧めします。詳細については、xhost の使用方法に関するこれらのリソースをご参照ください(1)(2)

Docker は主にバックグラウンドアプリケーションや CLI プログラムをコンテナ化するために使用されますが、グラフィカルプログラムを実行することもできます。Linux の世界では、グラフィカル表示を処理する 2 つの主要なグラフィックサーバー、X11(X Window System とも呼ばれます)と Wayland があります。開始する前に、現在どちらのグラフィックサーバーを使用しているかを特定することが不可欠です。確認するには、次のコマンドを実行してください。

env | grep -E -i 'x11|xorg|wayland'

X11またはWaylandディスプレイサーバーのセットアップと構成は、本ガイドの範囲外です。上記のコマンドで何も返されない場合は、続行する前にいずれかをシステムで動作させる必要があります。

GUIを使用してDockerコンテナを実行する#

GPUを使用する

GPU を使用している場合は、コマンドに --device nvidia.com/gpu=all フラグを追加できます。

X11を使用している場合、以下のコマンドを実行してDockerコンテナがX11ソケットにアクセスできるようにします。

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host ultralytics/ultralytics:latest

このコマンドは、DISPLAY 環境変数をホストのディスプレイに設定し、X11 ソケットをマウントし、.Xauthority ファイルをコンテナにマッピングします。xhost +local:docker コマンドを使用すると、Docker コンテナが X11 サーバーにアクセスできるようになります。

GUIでDockerを使用する#

これで、Dockerコンテナ内でグラフィカルアプリケーションを表示できるようになります。例えば、次のCLI commandを実行して、YOLO26 modelからのpredictionsを視覚化できます。

yolo predict model=yolo26n.pt show=True
テスト

Docker グループが X11 サーバーへのアクセス権を持っていることを確認する簡単な方法は、xclockxeyes などの GUI プログラムを実行するコンテナを実行することです。または、GNU-Linux ディスプレイサーバーの X11 サーバーへのアクセスをテストするために、これらのプログラムを Ultralytics Docker コンテナにインストールすることもできます。問題が発生した場合は、環境変数 -e QT_DEBUG_PLUGINS=1 の設定を検討してください。この環境変数を設定すると、デバッグ情報の出力が有効になり、トラブルシューティングプロセスに役立ちます。

Docker GUIの使用を終了する場合#

アクセスの取り消し

いずれの場合も、終了したらDockerグループからのアクセス権を取り消すことを忘れないでください。

xhost -local:docker
画像の結果をターミナルで直接表示したい場合

端末を使用した画像結果の表示に関する次のガイドをご参照ください。


これで、Docker で Ultralytics を使用する準備が整い、その機能を活用できるようになりました。Ultralytics Web アプリケーションをセルフホストするには、プラットフォームオンプレミスガイドをご覧ください。その他の Python パッケージのインストール方法については、Ultralytics クイックスタートドキュメントをご覧ください。

よくある質問 (FAQ)#

UltralyticsをDockerでセットアップするにはどうすればよいですか?#

Docker で Ultralytics をセットアップするには、まずシステムに Docker がインストールされていることを確認してください。NVIDIA GPU をお持ちの場合は、NVIDIA Container Toolkit をインストールして GPU サポートを有効にします。次に、次のコマンドを使用して、Docker Hub から最新の Ultralytics Docker イメージをプルします。

sudo docker pull ultralytics/ultralytics:latest

詳細な手順については、Dockerクイックスタートガイドを参照してください。

機械学習プロジェクトでUltralytics Dockerイメージを使用する利点は何ですか?#

Ultralytics Docker イメージを使用すると、異なるマシン間で一貫した環境が確保され、同じソフトウェアと依存関係が再現されます。これは、チーム間での共同作業、さまざまなハードウェアでのモデルの実行、および再現性の維持に特に役立ちます。一般的な NVIDIA GPU トレーニングには latest を使用するか、NVIDIA Jetson デバイスの JetPack バージョンに一致するイメージを選択してください。完全なイメージテーブルを確認するか、Ultralytics Docker Hub を探索してください。

Dockerコンテナ内でGPUサポートを使用してUltralytics YOLOを実行するにはどうすればよいですか?#

まず、NVIDIA Container Toolkit がインストールされ、構成されていることを確認します。次に、次のコマンドを使用して、GPU サポート付きで Ultralytics YOLO を実行します。

sudo docker run -it --ipc=host --device nvidia.com/gpu=all ultralytics/ultralytics:latest # all GPUs

このコマンドは、GPUアクセス権を持つDockerコンテナをセットアップします。詳細については、Dockerクイックスタートガイドを参照してください。

ディスプレイサーバーを使用してDockerコンテナ内でYOLOの予測結果を視覚化するにはどうすればよいですか?#

Dockerコンテナ内でGUIを使用してYOLOの予測結果を視覚化するには、Dockerがディスプレイサーバーにアクセスできるようにする必要があります。X11を実行しているシステムの場合、コマンドは以下の通りです。

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v /tmp/.X11-unix:/tmp/.X11-unix \
  -v ~/.Xauthority:/root/.Xauthority \
  -it --ipc=host ultralytics/ultralytics:latest

Waylandを実行しているシステムの場合は、以下を使用してください。

xhost +local:docker && docker run -e DISPLAY=$DISPLAY \
  -v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
  --net=host -it --ipc=host ultralytics/ultralytics:latest

詳細については、Docker コンテナでのグラフィカルユーザーインターフェイス (GUI) アプリケーションの実行セクションをご覧ください。

ローカルディレクトリをUltralytics Dockerコンテナにマウントできますか?#

はい、-v フラグを使用して、ローカルディレクトリを Ultralytics Docker コンテナにマウントできます。

sudo docker run -it --ipc=host --device nvidia.com/gpu=all -v /path/on/host:/path/in/container ultralytics/ultralytics:latest

/path/on/host をローカルマシンのディレクトリに置き換え、/path/in/container をコンテナ内の希望するパスに置き換えてください。このセットアップにより、コンテナ内でローカルファイルを操作できるようになります。詳細については、ファイルアクセシビリティに関する注意事項セクションをご参照ください。

コメント