目录
- 1、前言
- 2、安装docker
- 3、编写容器管理脚本
- 4、创建容器
1、前言
在日常开发全志、rk等不同平台时,大多数时候只有一个编译主机,但不同sdk所需要的编译环境可能不同。所以本文将记录使用docker为每个平台创建独立的开发环境。
2、安装docker
# 1.卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 2.安装 Docjavascriptker 依赖 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) signeandroidd-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写一个脚本,支持创建容器,进入容器,删除容器:
#!/bin/bash # 文件名: sdk_docker.sh # 用法: # 创建并启动环境: ./sdk_docker.sh create <chip> <sdk_path> # 进入环境: ./sdk_docker.sh enter <chip> # 删除环境: ./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 noLnOIKmt 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}}' | http://www.devze.comgrep -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_Nhttp://www.devze.comAME removed." else echo "Container $CONTAINER_NAME does not exist." fi ;; *) echo "Unknown action: $ACTION" exit 1 ;; esac
4、创建容器
- 例如现在要开发t527,执行如下脚本为t527创建一个独立的容器:
# ./sdk_docker.sh create <chip> <sdk_path> # <chip> : 芯片名称,用于构建容器名称 # <sdk_path> : sdk在宿主机的绝对路径 sudo ./sdk_docker.sh create t527 /mnt/allwinner/t527
创建成功后会自动进入容器,容器中的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
之后就可以在独立的容器里安装相关的编译环境。各个平台之间互不干扰。
到此这篇关于使用docker搭建嵌入式Linux开发环境的文章就介绍到这了,更多相关docker搭建嵌入式Linux内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论