# Dockerコンテナの使用

DockerコンテナはQualcomm Linuxで有効です。Dockerコンテナを使用するには、Qualcomm BSPで仮想化機能が有効になっていることを確認します。Qualcomm Linuxデバイスでコンテナを使用するには、ワークスペースの一部として `meta-virtualization` レイヤーが有効になっていることを確認します。

## Docker

Dockerは `qcom-multimedia-image` で有効になっています。

1. `qcom-multimedia-image` イメージのレシピでは、`meta-qcom-distro/recipes-products/packagegroups/packagegroup-qcom-multimedia.bb` を使用して、`packagegroup-qcom-containers` を含めます。
2. `Packagegroup-qcom-containers` は、`dynamic-layers/virtualization-layer/recipes-containers/packagegroups/packagegroup-qcom-containers.bb` の `meta-qcom-hwe` レイヤーで定義されます。
3. イメージのビルドとフラッシュが行われた後、デバイスでDockerが利用可能になります。
4. カーネルの互換性を検証するには、デバイスで `check-config.sh` スクリプトを実行します。
5. 構成を確認するには、必要なカーネル構成を有効にしてイメージを再ビルドします。詳細については、[Kernel compatibility](https://docs.docker.com/engine/install/troubleshoot/#:~:text=Kernel%20compatibility,check%2Dconfig.sh%20script.&amp;text=The%20script%20only%20works%20on%20Linux) を参照してください。
6. Dockerデーモンのステータスを確認するには、以下のコマンドを実行して出力を確認します。

    | コマンド | 説明 | 出力 |
    | --- | --- | --- |
    | `systemctl status docker` | 起動後にDockerコマンドが少なくとも1回実行されている場合 | アクティブ（実行中） |
    | `systemctl status docker` | デバイスが起動後にDockerコマンドを実行していない場合 | インアクティブ（停止） |
    |  |  |  |

`linux/arm64` プラットフォーム用のDockerリポジトリから取得され、デバイスで正常に動作することがテストされたイメージは以下のとおりです。

> 
> 
> - `busybox`
> - `python`
> - `alpine`
> - `ubuntu`
> - `postgres`
> - `mongo`
> - `nginx`
> - `redis`

以下のユースケースは、Dockerを有効にして検証されています。

- Docker loadユーティリティを使用して、tarファイルからDockerイメージをロードする。
- DockerファイルからDockerイメージをビルドする。
- 取得/ビルドされたDockerイメージを `.tar` ファイルに保存する。
- `.tar` ファイルとして保存されているDockerイメージをロードする。
- 取得/ビルドされた複数のイメージのコンテナインスタンスを複数実行する。
- デバイスにロードされているDockerイメージのリストを確認する。
- デバイスのアクティブコンテナとコンテナ全体のリストを確認する。
- Docker inspectユーティリティを使用して、Dockerイメージを検査する。
- Docker logsユーティリティを使用して、コンテナからログを取得する。
- Docker stopユーティリティとDocker killユーティリティを使用して、コンテナを停止および終了する。
- デバイスからコンテナとDockerイメージを削除する。

## Docker からのハードウェア・ノード・アクセス

Dockerコンテナ内で実行されるアプリケーションは、デバイスのデバイス・ノードやファイルにアクセスする必要がある場合があります（すなわち、デバイスがDockerコンテナのホストです）。Dockerはこのタスクを実行するにあたり、runコマンドのオプションとしてそれぞれのデバイス・ノードを渡します。

docker run -it --rm --device=<device-1> --device=<device-2> <docker-image-name>
    Copy to clipboard

デバイスの `/dev` ディレクトリにあるデバイス・ノートを渡します。ユース・ケースに応じて、例えばグラフィックのシナリオでは、`--device=/dev/kgsl-3d0` を使用して `/dev/kgsl-3d0` をDockerに渡します。

Dockerコンテナ内で実行されるアプリケーションは、デバイス（ターゲットホスト）のストレージにアクセスする必要がある場合もあります。ファイル/ディレクトリをバインドマウントとして公開するには、以下のコマンドを実行します。

docker run -it --rm --mount type=bind,source=<source-path-on-device>,target=<destination-path-inside-container> <docker-image-name>
    Copy to clipboard

以下のコマンドを使用して、複数のディレクトリ、ファイル、デバイスノードをコンテナに公開するdockerコンテナを実行します。

docker run -it --rm --device=<device-1> --device=<device-2> --mount type=bind,source=<source-path-on-device-1>,target=<destination-path-inside-container-1>  --mount type=bind,source=<source-path-on-device-2>,target=<destination-path-inside-container-2> <docker-image-name>
    Copy to clipboard

## Qualcomm Linux デバイスで Docker Compose を実行する

Docker Compose は、マルチコンテナアプリケーションの定義と実行を行うためのツールです。単一の分かりやすい YAML 構成ファイルでサービス、ネットワーク、ボリュームを定義することで、アプリケーションスタックの管理を効率化します。デフォルトで、Qualcomm Linux リリースには Docker Compose が `qcom-multimedia-image` に含まれています。

`docker-compose` パッケージは、`packagegroup-qcom-containers` を通して `meta-qcom-distro` メタデータレイヤー の `packagegroup-qcom-multimedia` パッケージ・グループに追加されます。

**デバイスでDocker Composeを実行するには：**

1. `/var` などのデバイスの書き込み可能なパス（例：`/var/docker-compose-yaml`）の下に、デバイスのDocker Composeで使用するDocker Compose YAMLファイルを作成またはコピーします。
2. Docker Compose YAMLファイルに記載されているDockerイメージが、デバイスで利用可能であることを確認します。利用できない場合は、デバイスを有効なインターネット接続に接続し、Dockerイメージを取得する必要があります。
3. 複数のYAMLファイルに対してDocker Composeを実行するには、以下のコマンドを実行します。

docker-compose -f <docker-compose-file-1>.yml -f <docker-compose\u0002file-2>.yml up
        Copy to clipboard

Docker Composeが実行され、Docker Compose YAMLファイルで構成されたDockerコンテナが開始されます。Docker Composeコマンドが戻ってきた後、`docker ps -a` と `docker logs <conatiner-id>` を実行して、Dockerコンテナが期待どおりに実行されているかを確認します。

Docker Composeの詳細については、[Docker Composeの概要](https://docs.docker.com/compose) を参照してください。

Last Published: Dec 23, 2025

[Previous Topic
Qualcomm Linux のパーティションを管理する](https://docs.qualcomm.com/bundle/publicresource/80-70020-27JA/topics/managing_partitions_in_qualcomm_linux.md) [Next Topic
Qualcomm Linux で Kubernetes をセットアップする](https://docs.qualcomm.com/bundle/publicresource/80-70020-27JA/topics/setup_kubernetes_with_qualcomm_linux.md)

Source: [https://docs.qualcomm.com/doc/80-70020-27JA/topic/use_of_docker_containers.html](https://docs.qualcomm.com/doc/80-70020-27JA/topic/use_of_docker_containers.html)