# 使用 Docker 容器

Qualcomm Linux 啟用 Docker 容器。若要使用 Docker 容器，確保 Qualcomm BSP 已啟用虛擬化功能。若要使用 Qualcomm Linux 裝置上的容器，確保 `meta-virtualization` 層當成工作區的一部分啟用。

## Docker

`qcom-multimedia-image` 啟用 Docker：

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. 若要驗證組態，請啟用所需的核心組態並重建映像。如需更多資訊，請參閱 [核心相容性](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 命令 | 啟動中 (運行中) |
    | `systemctl status docker` | 如果該裝置在啟動後沒有運行任何 Docker 命令 | 非活動 (已終止) |
    |  |  |  |

從 Docker 存放庫中讀取適用於 `linux/arm64` 平台的影像檔，並在裝置上測試成功執行的影像檔如下：

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

以下使用案例已在 Docker 啟用時驗證：

- 使用 Docker load 工具從 tar 檔案載入 Docker 影像檔。
- 使用 Dockerfile 建置 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 版本在 `qcom-multimedia-image` 中包含 Docker Compose。

`docker-compose` 包通過 `packagegroup-qcom-containers` 添加到 `meta-qcom-distro` 元數據層中的 `packagegroup-qcom-multimedia` 包組中。

**在裝置上執行 Docker Compose：**

1. 在裝置上建立或複製 Docker Compose YAML 文件到可寫入路徑，例如 `/var` (例如 `/var/docker-compose-yaml`) ，以便在裝置上與 Docker Compose 一起使用。
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-27TC/topics/managing_partitions_in_qualcomm_linux.md) [Next Topic
使用 Qualcomm Linux 設定 Kubernetes](https://docs.qualcomm.com/bundle/publicresource/80-70020-27TC/topics/setup_kubernetes_with_qualcomm_linux.md)

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