Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Installing Docker with ROCm GPU Support on Ubuntu 24.04

2026年10月15日に「Dev.to」が公開したITニュース「Installing Docker with ROCm GPU Support on Ubuntu 24.04」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Dockerはアプリを隔離しどこでも動かす技術だ。GPU対応Dockerは機械学習などでGPUを高速化する。本記事は、Ubuntu 24.04でROCm GPU対応Dockerをインストールし、コンテナからROCm GPUを利用する手順と検証法を解説する。

ITニュース解説

この解説では、Ubuntu 24.04環境でDockerとAMD社製GPU向けのROCmサポートを組み合わせ、機械学習などの重い処理を効率的に実行するための準備について説明する。

まず、Dockerについて簡単に解説する。Dockerは、アプリケーションと、そのアプリケーションが動作するために必要なすべての要素(ライブラリ、設定ファイルなど)を「コンテナ」と呼ばれる独立した環境にまとめてパッケージ化するプラットフォームだ。このコンテナは、どのコンピューター上でも一貫して同じように動作するため、開発環境と本番環境での差異による問題を減らすことができる。通常のアプリケーションはCPUで処理されるが、機械学習や動画処理のような非常に計算量の多いタスクでは、グラフィックス処理ユニット(GPU)を使うと飛躍的に高速化できる。GPU対応コンテナは、このコンテナ化されたアプリケーションが、コンピューターに搭載されたGPUの性能を利用できるようにする技術である。

今回の目的は、DockerをUbuntu 24.04にインストールし、さらにDockerコンテナの中からAMD製のROCm対応GPUを利用できるようにすることだ。ROCm(Radeon Open Compute platform)は、AMDが開発したGPUコンピューティングのためのオープンソースプラットフォームで、NVIDIAのCUDAに相当するものと考えてよい。すでにAMD ROCm対応GPUを搭載したサーバーがセットアップされていることを前提として、そのGPUをDockerコンテナから利用するための手順を見ていこう。

最初のステップは、Dockerのインストールだ。Dockerをインストールする際には、Dockerの公式リポジトリから取得するのが最も推奨される方法である。これにより、常に最新かつセキュリティが確保されたバージョンのDockerを利用できる。

まず、Dockerの公式GPGキーをシステムに追加する作業を行う。これは、Dockerのリポジトリからダウンロードされるパッケージが、本当にDockerの公式によって作成され、途中で改ざんされていないかをシステムが検証するための「鍵」のようなものだ。具体的には、apt-get updateでパッケージリストを更新し、ca-certificatesとcurlという通信に必要なツールをインストールする。次に、鍵を保存するためのディレクトリ/etc/apt/keyringsを作成し、curlコマンドを使ってDockerのGPG公開鍵をダウンロードしてそこに保存する。最後に、保存した鍵ファイルに適切な読み取り権限を設定する。これらの手順により、Dockerのパッケージが信頼できるものであることが保証される。

次に、Dockerの公式リポジトリをシステムのAPTソースリストに追加する。APTはUbuntuなどのDebian系OSでソフトウェアを管理するためのシステムで、どこからソフトウェアをダウンロードするかを「ソースリスト」で管理している。ここで、Dockerのリポジトリの情報を追加することで、APTがDockerのソフトウェアを見つけられるようになる。echoコマンドを使ってリポジトリのURLと、それが先ほど追加したGPGキーによって署名されていることを示す情報を記述し、それをsudo teeコマンドで/etc/apt/sources.list.d/docker.listというファイルに書き込む。このファイルは、APTが利用可能なソフトウェアのリストを検索する場所の一つとなる。その後、再度sudo apt-get updateを実行し、新しく追加されたDockerリポジトリのパッケージ情報をシステムに読み込ませる。

いよいよDocker本体とその関連コンポーネントをインストールする。sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginというコマンドを実行する。これにより、「Docker Engine」(Dockerの核心部分で、コンテナの実行を担う)、コンテナを操作するためのコマンドラインインターフェース「Docker CLI」、「Containerd」(コンテナの実行と管理を行う低レベルのランタイム)、コンテナイメージのビルドを強化する「Buildxプラグイン」、そして複数のコンテナを連携させて管理するための「Docker Composeプラグイン」が一括でインストールされる。

次に、コンテナからROCmデバイスを利用するための重要なポイントを理解しよう。GPUをコンテナ内で利用するには、ホストOS(コンテナが動作している物理的なコンピューター)の特定のデバイスファイルをコンテナに公開する必要がある。ROCmを利用したGPUアクセラレーションのワークロードでは、主に次の二つのデバイスファイルが必要となる。

一つ目は/dev/kfd(Kernel Fusion Driver)だ。これは、ユーザーアプリケーションとAMD GPUの間で計算タスクのための通信を管理する役割を担う。GPUメモリの管理、深層学習や科学計算といった演算タスクのスケジューリングと実行も、このデバイスを通じて行われる。

二つ目は/dev/dri(Direct Rendering Infrastructure)だ。これは、GPUへのグラフィックス描画アクセスを提供するもので、2D/3Dレンダリングや動画処理タスクで利用される。

機械学習やレンダリングといったGPUアクセラレーションタスクでGPUの能力をDockerコンテナに公開するには、これら二つのデバイスの両方が必要となる。

いよいよ実際にコンテナからROCmデバイスにアクセスする手順だ。

まず、ROCm対応のターミナルコンテナイメージを取得する。これは、ROCmがインストールされており、GPUの利用状況を確認するためのツールなどが含まれている軽量なイメージだ。docker pull rocm/rocm-terminal:latestコマンドを実行すると、このイメージがDockerのイメージレジストリからダウンロードされる。

次に、GPUデバイスにアクセスできる一時的なコンテナを実行する。docker run --rm -it --device=/dev/kfd --device=/dev/dri --security-opt seccomp=unconfined rocm/rocm-terminalというコマンドだ。このコマンドにはいくつかのオプションが含まれる。--rmはコンテナが終了した際に自動的に削除されるようにするオプション。-itは、インタラクティブモードでコンテナを実行し、ターミナルに接続することを意味する。そして最も重要なのが--device=/dev/kfd --device=/dev/driだ。これは、ホストOSの/dev/kfdと/dev/driというGPUへのアクセスポイントを、実行するコンテナの中に「マウント」(利用可能にする)するためのオプションである。--security-opt seccomp=unconfinedは、コンテナのセキュリティ設定を緩和し、GPUデバイスへのアクセスを許可するために必要な場合がある。このコマンドを実行すると、ROCmターミナルコンテナが起動し、そのコンテナのシェルプロンプトが表示される。

コンテナの内部からGPUが利用可能になっているかを確認するため、rocm-smiというコマンドを実行する。これはROCmのシステム管理インターフェースで、AMD GPUの情報を表示するツールだ。このコマンドの出力として、検出されたすべてのGPUデバイスとその仕様が表示されれば、コンテナからROCm GPUへのアクセスが正常に確立されていることが確認できる。

確認が終わったら、exitコマンドを入力してコンテナから出る。--rmオプションを指定しているので、コンテナは自動的に終了し削除される。

ここまでで、Docker環境からROCm対応GPUを利用するための基本的なセットアップが完了したことになる。次のステップとしては、この環境をさらに活用していくことになる。例えば、PyTorchやTensorFlowのような機械学習フレームワークをROCmアクセラレーションを有効にしてコンテナ内にインストールし、実際のモデル学習を行うことができる。また、特定のアプリケーションをROCm対応のベースイメージ上に構築するためのカスタムDockerfileを作成することも考えられる。複数のROCm対応コンテナを効率的に管理・連携させるためには、Kubernetesのようなコンテナオーケストレーターを利用するのも良い方法だ。さらに、rocm-smiコマンドは、実際のワークロード実行中にGPUの利用状況を監視するためにも役立つ。

関連コンテンツ

関連IT用語

関連ITニュース