使用docker搭建嵌入式Linux開發(fā)環(huán)境
1、前言
在日常開發(fā)全志、rk等不同平臺時,大多數時候只有一個編譯主機,但不同sdk所需要的編譯環(huán)境可能不同。所以本文將記錄使用docker為每個平臺創(chuàng)建獨立的開發(fā)環(huán)境。
2、安裝docker
# 1.卸載舊版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 2.安裝 Docker 依賴 sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg lsb-release # 3.添加 Docker 官方 GPG key sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg # 4.添加 Docker 官方 apt 源 echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # 5.安裝 Docker sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin # 6.檢查是否安裝成功 docker --version
3、編寫容器管理腳本
找AI寫一個腳本,支持創(chuàng)建容器,進入容器,刪除容器:
#!/bin/bash
# 文件名: sdk_docker.sh
# 用法:
# 創(chuàng)建并啟動環(huán)境: ./sdk_docker.sh create <chip> <sdk_path>
# 進入環(huán)境: ./sdk_docker.sh enter <chip>
# 刪除環(huán)境: ./sdk_docker.sh remove <chip>
ACTION=$1
CHIP=$2
SDK_PATH=$3
IMAGE="ubuntu:22.04" # 可自行修改,例如某某sdk推薦的ubuntu版本為20.04
CONTAINER_NAME="sdk_${CHIP}_env"
if [[ -z "$ACTION" || -z "$CHIP" ]]; then
echo "Usage:"
echo " $0 create <chip> <sdk_path>"
echo " $0 enter <chip>"
echo " $0 remove <chip>"
exit 1
fi
case "$ACTION" in
create)
if [[ -z "$SDK_PATH" ]]; then
echo "Error: SDK path must be provided for create."
exit 1
fi
# 檢查鏡像是否存在
if ! docker image inspect $IMAGE >/dev/null 2>&1; then
echo "Image $IMAGE not found locally. Pulling..."
docker pull $IMAGE
fi
# 判斷容器是否已存在
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
echo "Container $CONTAINER_NAME already exists. Starting it..."
docker start -ai $CONTAINER_NAME
else
echo "Creating new container $CONTAINER_NAME..."
# 容器內掛載路徑與宿主機一致
docker run -it --name $CONTAINER_NAME -v $SDK_PATH:$SDK_PATH $IMAGE /bin/bash
fi
;;
enter)
# 進入已有容器
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
# 判斷容器是否在運行
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
docker exec -it $CONTAINER_NAME /bin/bash
else
echo "Starting container $CONTAINER_NAME..."
docker start -ai $CONTAINER_NAME
fi
else
echo "Container $CONTAINER_NAME does not exist. Create it first."
exit 1
fi
;;
remove)
# 刪除容器
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
docker rm -f $CONTAINER_NAME
echo "Container $CONTAINER_NAME removed."
else
echo "Container $CONTAINER_NAME does not exist."
fi
;;
*)
echo "Unknown action: $ACTION"
exit 1
;;
esac
4、創(chuàng)建容器
- 例如現在要開發(fā)t527,執(zhí)行如下腳本為t527創(chuàng)建一個獨立的容器:
# ./sdk_docker.sh create <chip> <sdk_path> # <chip> : 芯片名稱,用于構建容器名稱 # <sdk_path> : sdk在宿主機的絕對路徑 sudo ./sdk_docker.sh create t527 /mnt/allwinner/t527
創(chuàng)建成功后會自動進入容器,容器中的sdk路徑和宿主機的一致。ctrl+d可以退出容器:

- 重新進入容器:
# ./sdk_docker.sh enter <chip> sudo ./sdk_docker.sh enter t527
- 刪除容器
# ./sdk_docker.sh remove <chip> sudo ./sdk_docker.sh remove t527
之后就可以在獨立的容器里安裝相關的編譯環(huán)境。各個平臺之間互不干擾。
到此這篇關于使用docker搭建嵌入式Linux開發(fā)環(huán)境的文章就介紹到這了,更多相關docker搭建嵌入式Linux內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Linux平臺搭建docker環(huán)境并簡單使用示例
- Linux搭建Docker環(huán)境全過程
- linux下使用Docker和OSS輕松搭建ownCloud專屬網盤(網盤關閉不用怕)
- 阿里云Linux CentOS 7 Docker部署使用gogs搭建自己的git服務器
- Linux服務器搭建nvidia-docker環(huán)境過程詳解
- Linux環(huán)境下使用Docker搭建Jenkins容器的方法步驟
- Linux搭建Docker環(huán)境的詳細過程(最新推薦)
- 如何使用Docker和cpolar在Linux服務器上搭建DashDot監(jiān)控面板
- Linux如何使用docker方式搭建SQL Server
相關文章
基于Dockerfile創(chuàng)建zabbix監(jiān)控體系代碼實例
這篇文章主要介紹了基于Dockerfile創(chuàng)建zabbix監(jiān)控體系代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-05-05
基于docker-compose構建Mongodb副本集的示例詳解
副本集是?MongoDB?高可用性和數據安全性策略的基礎,適用于對數據安全性和服務可用性有較高要求的場景,本文給大家介紹了如何基于docker-compose構建Mongodb副本集,文中通過代碼示例給大家介紹的非常詳細,需要的朋友可以參考下2024-01-01
5分鐘教你實現用docker搭建Redis集群模式和哨兵模式
本文主要介紹了5分鐘實現用docker搭建Redis集群模式和哨兵模式,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-09-09

