Ultralytics向けDockerクイックスタートガイド#
このガイドでは、Ultralyticsプロジェクト用のDocker環境をセットアップする方法を包括的に紹介します。Dockerは、コンテナ内でアプリケーションを開発、配布、実行するためのプラットフォームです。デプロイ先にかかわらず、ソフトウェアを常に同じように実行できる点で、特に有用です。詳細については、Docker HubにあるUltralytics Dockerリポジトリをご覧ください。
学習内容#
- 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のWebサイトからダウンロードしてインストールできます。
- GPUアクセラレーションを使用する場合は、システムにNVIDIA GPUとNVIDIAドライバーがインストールされていることを確認してください。CPUイメージではNVIDIAハードウェアは必要ありません。
- NVIDIA Jetsonデバイスを使用している場合は、適切なJetPackバージョンがインストールされていることを確認してください。詳細については、NVIDIA Jetsonガイドを参照してください。
NVIDIAサポート付きでDockerをセットアップする(オプション)#
まず、次のコマンドを実行して、NVIDIAドライバーが適切にインストールされていることを確認します。
nvidia-smiNVIDIA 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 updatesudo apt-get install -y nvidia-container-toolkitDockerでCDIデバイスを確認する#
nvidia-ctk cdi listを実行して、GPUのCDIデバイスが利用可能であることを確認します(Toolkitのnvidia-cdi-refreshサービスは、Toolkit >= 1.18では仕様を自動的に生成および管理します)。
nvidia-ctk cdi listnvidia.com/gpu=0やnvidia.com/gpu=allなどのエントリが表示されます。検出されたCDIデバイスはdocker infoにも表示されます。
Ultralytics Dockerイメージのインストール#
Ultralyticsは、次のイメージをDocker Hubに公開しています。各イメージは、Docker公開ワークフローによって、リンク先のDockerfileからビルドされます。
| タグ | プラットフォームと用途 | ソース |
|---|---|---|
latest | GPUトレーニングおよび推論用のCUDA対応Linux AMD64 | Dockerfile |
latest-export | 変換およびベンチマーク用のCUDA・エクスポート依存関係対応Linux AMD64 | Dockerfile-export |
latest-python | CPU推論用の軽量Linux AMD64 Pythonイメージ | Dockerfile-python |
latest-python-export | エクスポート依存関係を含むLinux AMD64 CPUイメージ | Dockerfile-python-export |
latest-cpu | デフォルトコマンドとしてBashを使用するLinux AMD64 CPUイメージ | Dockerfile-cpu |
latest-jupyter | JupyterLabとUltralyticsチュートリアルノートブックを含むLinux AMD64 CPUイメージ | Dockerfile-jupyter |
latest-arm64 | Appleシリコン、Raspberry Pi、その他のARM64システム向けLinux ARM64 CPUイメージ | Dockerfile-arm64 |
latest-nvidia-arm64 | Linux ARM64はDGX Spark (DGX OS)およびThorのPyTorch (JetPack 7.1)に対応しています。バンドルされているTensorRTはJetPackをサポートしていません。 | Dockerfile-nvidia-arm64 |
latest-jetson-jetpack6 | JetPack 6を実行するNVIDIA Jetsonデバイス向けLinux ARM64 | Dockerfile-jetson-jetpack6 |
latest-jetson-jetpack5 | JetPack 5を実行するNVIDIA Jetsonデバイス向けLinux ARM64 | Dockerfile-jetson-jetpack5 |
latest-jetson-jetpack4 | JetPack 4を実行するNVIDIA Jetsonデバイス向けLinux ARM64 | Dockerfile-jetson-jetpack4 |
latest-runner | セルフホストGitHub Actions GPUランナー用Linux AMD64 CUDAイメージ | Dockerfile-runner |
latest-runner-cpu | セルフホストGitHub Actions CPUランナー用Linux AMD64イメージ | Dockerfile-runner-cpu |
AMD64 GPUイメージ (latest、latest-export、latest-runner) はPyTorch 2.14とCUDA 13.2を使用します。起動する前に nvidia-smi でホストドライバのCUDAサポートを確認してください。新しいコンテナをインストールしてもホストドライバはアップグレードされません。CUDA 13では、Tesla P100やV100を含め、Maxwell、Pascal、Volta GPUのサポートが削除されます。NVIDIAのCUDAリリースノートおよびドライバの互換性要件を参照してください。
NVIDIA ARM64イメージは、CUDA 13.4およびTensorRT 11.2を搭載したNVIDIA PyTorch 26.08を使用します。ThorにおけるPyTorchサポートはTensorRTには及びません。NVIDIAはJetPack上でTensorRT 11.2をサポートしていません。JetsonのTensorRTエクスポートには、使用するJetPackリリースに対応するサポート済みのTensorRT 10.xランタイムを使用してください。JetsonガイドまたはDGX Sparkガイドのプラットフォーム要件に従ってください。JetPack 4、5、6のイメージは、それぞれ個別のデバイス固有のスタックを維持します。
CondaのDockerfileはローカルビルド用に入手可能です。latest-conda の自動パブリッシングは無効化されているため、そのレジストリタグにはこれらのアップデートが含まれていません。
LiteRTのエクスポートには latest-python-export を使用してください。GPUの latest-export イメージはPyTorch 2.14を維持し、現在の依存関係がPyTorch 2.14未満を必要とするためLiteRTを除外しています。
latestで始まるタグは、直近に公開されたmainブランチのビルドを追跡します。バージョン付きタグでは、latestプレフィックスがVERSION、VERSION-cpu、VERSION-jetson-jetpack6などのUltralyticsリリースに置き換えられます。再現可能な環境には、バージョン付きタグを使用してください。
最新のイメージをプルするには、次のコマンドを実行します。
# Pull the latest Ultralytics image from Docker Hub
sudo docker pull ultralytics/ultralytics:latest代わりに自分でイメージをビルドするには、リポジトリをクローンし、上の表にある対応するDockerfileを指定します。ビルドコンテキストにはリポジトリのルートを使用してください。
# Build the CPU image locally from docker/Dockerfile-cpu
sudo docker build -t ultralytics/ultralytics:latest-cpu -f docker/Dockerfile-cpu .DockerコンテナでUltralyticsを実行する#
Ultralytics Dockerコンテナを実行する方法は次のとおりです。
CPUのみを使用する#
# Run without GPU
sudo docker run -it --ipc=host ultralytics/ultralytics:latest-cpuGPUを使用する#
# 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を割り当て、stdinを開いたままにするため、コンテナと対話できます。--ipc=hostフラグはホストのIPC名前空間の共有を有効にします。これはプロセス間でメモリを共有するために不可欠です。--device nvidia.com/gpu=...フラグは、CDIを介してコンテナからホストのGPUにアクセスできるようにします。
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)アプリケーションを実行する#
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コマンドを実行して、YOLO26モデルの予測を可視化できます。
yolo predict model=yolo26n.pt show=Trueテスト
Docker GUIの使用を終えたら#
どちらの場合も、終了したらDockerグループからのアクセスを取り消すことを忘れないでください。
xhost -local:dockerターミナルで画像結果を直接表示しますか?
ターミナルを使用して画像結果を表示する方法に関する次のガイドを参照してください。
これで、DockerでUltralyticsを使用する準備が整い、その機能を活用できる状態になりました。Ultralytics Webアプリケーションをセルフホストするには、Platform On-Premiseガイドを参照してください。Pythonパッケージの別のインストール方法については、Ultralyticsクイックスタートドキュメントを参照してください。
FAQ#
DockerでUltralyticsをセットアップするには、まずシステムにDockerがインストールされていることを確認してください。NVIDIA GPUがある場合は、NVIDIA Container ToolkitをインストールしてGPUサポートを有効にします。次に、次のコマンドを使用してDocker Hubから最新のUltralytics Dockerイメージをプルします。
sudo docker pull ultralytics/ultralytics:latest詳しい手順については、Dockerクイックスタートガイドを参照してください。
Ultralytics Dockerイメージを使用すると、異なるマシン間で一貫した環境を確保し、同じソフトウェアと依存関係を再現できます。これは、チーム間のコラボレーション、さまざまなハードウェアでのモデル実行、再現性の維持に特に役立ちます。一般的なNVIDIA GPUトレーニングには
latestを使用し、NVIDIA JetsonデバイスにはJetPackバージョンに対応するイメージを選択してください。完全なイメージ一覧を参照するか、Ultralytics Docker Hubをご覧ください。まず、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コンテナ内の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:latestWaylandを実行しているシステムでは、次を使用します。
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)アプリケーションを実行するセクションを参照してください。
はい、
-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をコンテナ内の目的のパスに置き換えてください。この設定により、コンテナ内でローカルファイルを操作できます。詳細については、ファイルアクセスに関する注意セクションを参照してください。