# Docker 環境建置指南 :::success # 目標 - 使用 Docker 簡化開發環境設置 - 減少 VM 對 Server 資源的占用 - 基於 Ubuntu 22.04 製作輕量化映像 ::: --- :::danger >[!] `$` 代表命令行在 server終端輸入 `#` 代表命令行在docker終端輸入 ::: ## 建置步驟 ### 1. 在 Server 建立資料夾 用於存放 STM 公司 SDK 資料: ```shell $ mkdir -p stmenv ``` ### 2. 拉取 Docker 映像 避免拉取 Ubuntu 24.04,請選擇 Ubuntu 22.04: ```shell $ docker pull ubuntu:22.04 ``` ### 3. 啟動容器並進入 Docker 以 Root 權限進入 Docker 容器: ```shell $ docker run -it \ -v /home/mac/stmenv:/workspace \ -w /workspace \ --user root \ --name stmenv \ ubuntu:22.04 ``` :::info /home/mac/stmenv 要改成主機端要掛載資料夾的的路徑 ::: --- ## Docker 操作指令 ### 1. 更新系統與安裝工具 在 Docker 中執行以下指令: ```shell # apt update # apt upgrade -y # apt install sudo -y # sudo apt install adduser ``` ### 2. 新增使用者 設定新使用者及密碼,並加入 `sudo` 群組: ```shell # sudo adduser mac <輸入密碼> # sudo usermod -aG sudo mac ``` :::info mac 名稱隨意 ::: ### 3. 查看 Docker 容器 在 Server 中執行以下指令檢查容器狀態: ```shell $ docker ps -a ``` 範例輸出: ![image](https://hackmd.io/_uploads/SJuTlJZOkx.png) ### 4. 提交容器映像 提交目前的容器為新映像: ```shell $ docker commit 035c8a53fe0e stmenv:latest ``` ### 5. 停止並移除舊容器 ```shell $ docker stop stmenv && docker rm stmenv ``` ### 6. 啟動新映像 以非 Root 使用者啟動新的容器: ```shell $ docker run -id \ -v /home/mac/stmenv:/home/mac/stmenv \ -w /home/mac/stmenv \ --user mac \ --name stm \ stmenv:latest ``` 範例輸出: ![image](https://hackmd.io/_uploads/BksCGJ-dke.png) --- ## 安裝 SDK 必備工具 參考 STM 官方文件:[官方連結](https://wiki.st.com/stm32mpu/index.php?title=Getting_started/STM32MP1_boards/STM32MP157x-EV1/Develop_on_Arm%C2%AE_Cortex%C2%AE-A7/Install_the_SDK&oldid=53173) :::danger 若照著官方連結安裝工具,可能導致編譯 Source Code 失敗。 ::: 在 Docker 中安裝以下工具: ```shell # sudo apt-get install build-essential libncurses-dev libncurses5 libyaml-dev libssl-dev # sudo apt install file # sudo apt install bc # sudo apt install python-is-python3 ``` > **注意**:未安裝 `file` 工具將導致以下錯誤: > ```shell > The command 'file' is required by the relocation script, please install it first. Abort! > ``` --- ## 下載並解壓 SDK 壓縮包 將 SDK 壓縮檔下載至 `stmenv` 資料夾: ```shell # sudo tar xvf en.SDK-x86_64-stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06.tar.gz # sudo tar xvf en.SOURCES-stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06.tar.gz ``` ## 更改權限 ```shell # sudo chown -R mac:mac ~/stmenv ``` :::info 如果你不更改權限,可能會導致以下問題: 權限不足:當你嘗試進入 ~/stmenv 或操作其中的文件時,系統可能提示「Permission denied(權限拒絕)」。 程序無法正常運行:如果 ~/stmenv 是某些應用程序的工作目錄,但其文件不屬於當前用戶,應用程序可能無法讀取或修改這些文件。 無法刪除文件:刪除或移動某些文件時可能需要更高權限。 ::: --- ## 安裝 SDK 執行以下指令安裝 SDK: ```shell # cd ~/stmenv # sudo ./stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06/sdk/st-image-weston-openstlinux-weston-stm32mp1.rootfs-x86_64-toolchain-5.0.3-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06.sh \ -d /home/mac/stmenv/stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06/sdk/Developer-Package/SDK ``` --- ## 環境變數設定 添加 SDK 環境變數至 `.bashrc`: ```shell # echo "source /home/mac/stmenv/stm32mp1-openstlinux-6.6-yocto-scarthgap-mpu-v24.11.06/sdk/Developer-Package/SDK/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi" >> ~/.bashrc ``` > **注意**:若執行環境配置有問題,請檢查安裝步驟。 ---