使用docker搭建嵌入式Linux开发环境

 更新时间:2025年08月29日 10:29:47   作者:Cohen0415(全网同名)  
本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、前言

在日常开发全志、rk等不同平台时,大多数时候只有一个编译主机,但不同sdk所需要的编译环境可能不同。所以本文将记录使用docker为每个平台创建独立的开发环境。

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写一个脚本,支持创建容器,进入容器,删除容器:

#!/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 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、创建容器

  1. 例如现在要开发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可以退出容器:

  1. 重新进入容器:
# ./sdk_docker.sh enter <chip>
sudo ./sdk_docker.sh enter t527
  1. 删除容器
# ./sdk_docker.sh remove <chip>
sudo ./sdk_docker.sh remove t527

之后就可以在独立的容器里安装相关的编译环境。各个平台之间互不干扰。

到此这篇关于使用docker搭建嵌入式Linux开发环境的文章就介绍到这了,更多相关docker搭建嵌入式Linux内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 基于Dockerfile创建zabbix监控体系代码实例

    基于Dockerfile创建zabbix监控体系代码实例

    这篇文章主要介绍了基于Dockerfile创建zabbix监控体系代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 基于docker-compose构建Mongodb副本集的示例详解

    基于docker-compose构建Mongodb副本集的示例详解

    副本集是 MongoDB 高可用性和数据安全性策略的基础,适用于对数据安全性和服务可用性有较高要求的场景,本文给大家介绍了如何基于docker-compose构建Mongodb副本集,文中通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • 使用Docker部署Python Flask应用的完整教程

    使用Docker部署Python Flask应用的完整教程

    Docker是一种开源的容器化平台,可以将应用程序及其依赖项打包成一个独立的容器,实现快速部署和跨平台运行,本文将详细介绍如何使用Docker来部署Python Flask应用程序,帮助开发者更高效地构建和部署应用,需要的朋友可以参考下
    2024-06-06
  • windows docker环境设置注意事项

    windows docker环境设置注意事项

    这篇文章主要介绍了windows docker环境设置注意事项的相关资料,需要的朋友可以参考下
    2017-01-01
  • CentOS7虚拟机安装并配置docker套件

    CentOS7虚拟机安装并配置docker套件

    这篇文章主要介绍了CentOS7虚拟机安装并配置docker套件,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Docker没有启动环境变量的问题解决

    Docker没有启动环境变量的问题解决

    在使用Docker容器时,有时候我们会遇到一个问题,就是在容器中没有启动环境变量,本文主要介绍了Docker没有启动环境变量的问题解决,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Docker启动安装nacos的实现示例

    Docker启动安装nacos的实现示例

    本文主要介绍了Docker启动安装nacos的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • 5分钟教你实现用docker搭建Redis集群模式和哨兵模式

    5分钟教你实现用docker搭建Redis集群模式和哨兵模式

    本文主要介绍了5分钟实现用docker搭建Redis集群模式和哨兵模式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Docker中启动Nacos的实现示例

    Docker中启动Nacos的实现示例

    本文主要介绍了Docker中启动Nacos的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • 如何将Docker的构建时间减少40%(推荐)

    如何将Docker的构建时间减少40%(推荐)

    这篇文章主要介绍了如何将Docker的构建时间减少40%,本文描述了我们在优化CI管道后获得的一些新见解,需要的朋友可以参考下
    2023-11-11

最新评论