手把手教你搭建嵌入式容器化开发环境!

原创 嵌入式大杂烩 2025-03-03 11:38

大家好,我是杂烩君。

在嵌入式开发中,我们经常会遇到这样的场景:

  • 本地开发环境正常运行的代码,移植到同事电脑就报错。
  • 更换开发板后,编译工具链版本不兼容导致构建失败。
  • 团队协作时,不同成员的依赖库版本差异引发玄学问题。

这些问题的根源在于开发环境的不一致性

传统嵌入式开发依赖手动配置工具链、交叉编译器、库文件等,稍有疏漏就会导致 "环境依赖黑洞"。

Docker 容器化技术的出现,为解决这些痛点提供了全新方案。

单片机开发的朋友,可能不怎么了解Docker,有必要了解一下。嵌入式Linux开发中,常常使用Docker容器进行嵌入式开发。

有没有朋友好奇这张长图怎么绘制?PlantUML了解一下:嵌入式开发中PlantUML图表的应用!

在DevOps 与 CI/CD中,Docker 镜像成为嵌入式开发的标准化交付单元,结合 Jenkins 等工具链,实现自动化构建、测试和部署。

DevOps是一种文化和实践方法,涵盖了软件开发周期的全过程,包括开发、测试、部署、监控等,强调开发和运维团队的紧密合作。

CI/CD是持续集成和持续交付的简称,聚焦于软件开发的一部分流程,主要包括自动化的构建、测试、部署等。

一、Docker 如何实现环境一致性

1. 容器化的三大核心优势

  • 标准化封装:将编译器、依赖库、脚本等打包成 Docker 镜像
  • 环境隔离:容器运行时与宿主机完全隔离,避免版本冲突
  • 跨平台迁移:一套镜像可在 Linux/macOS/Windows 上运行

2. 典型容器化开发流程

上面那张长图展示了较为全面的嵌入式容器化开发流程,包括几个关键阶段,比如开发环境设置、代码管理、容器化构建、测试、部署到硬件等。

实际上,我们搭建本地docker开发环境只需要关注如下几个步骤:

二、构建docker镜像

下面我们一起搭建一个嵌入式 Linux 的 Docker 开发环境并配置交叉编译器:

1、安装 Docker

我们需要先在我们的主机上安装 Docker。不同的操作系统安装方法有所不同。

以Ubuntu/Debian为例。

创建如下脚本docker_install.sh并执行:

# 更新系统软件包列表
sudo apt update
# 安装必要的依赖包
sudo apt install apt-transport-https ca-certificates curl software-properties-common
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加Docker软件源
echo"deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新软件包列表
sudo apt update
# 安装Docker引擎
sudo apt install docker-ce docker-ce-cli containerd.io
# 验证Docker是否安装成功
sudo docker run hello-world

2、创建 Dockerfile

Dockerfile 是用于构建 Docker 镜像的脚本文件,下面我们创建一个包含交叉编译器的嵌入式 Linux 开发环境。

# 使用基础镜像
FROM ubuntu:22.04

# 设置环境变量,避免交互提示
ENV DEBIAN_FRONTEND=noninteractive

# 更新系统软件包列表并安装必要的工具
RUN apt-get update && apt-get install -y \
    build-essential \
    wget \
    unzip \
    && rm -rf /var/lib/apt/lists/*


# 下载并安装交叉编译器
# 这里以arm-linux-gnueabihf为例,你可以根据实际需求替换
RUN apt-get update && apt-get install -y \
    gcc-arm-linux-gnueabihf \
    g++-arm-linux-gnueabihf \
    && rm -rf /var/lib/apt/lists/*


# 设置工作目录
WORKDIR /app

# 定义默认命令
CMD ["/bin/bash"]

3、构建 Docker 镜像

在包含 Dockerfile 的目录下,执行以下命令来构建 Docker 镜像:

sudo docker build -t embedded-docker:v1.0 .
  • -t:指定镜像的标签,这里我们将镜像命名为embedded-docker,标签为v1.0
  • .:表示使用当前目录下的 Dockerfile 进行构建。

4、运行 Docker 容器

构建完成后,执行以下命令启动 Docker 容器:

sudo docker run -it -v /home/linuxzn:/app --name embedded-container embedded-docker:v1.0
  • -it:以交互式终端模式运行容器。
  • -v:将主机目录映射到容器内的工作目录(主机路径:容器路径)。将主机的/home/linuxzn目录内容映射到容器/app路径下。
  • --name:指定容器的名称为embedded-container
  • embedded-docker:v1.0:指定要使用的镜像。

在容器内部,验证交叉编译器是否配置成功:

5、退出容器

命令:

exit

6、重新进入容器

如果你需要再次进入容器,可以使用以下命令重新启动并进入容器:

sudo docker start -i embedded-container

7、编译测试

实际开发中,我们在Ubuntu主机上编写代码,在主机终端git管理我们的代码,docker容器终端中进行编译:

通过以上步骤,我们就成功搭建了一个嵌入式 Linux 的 Docker 开发环境,并配置了交叉编译器。

三、Docker共享

我们制作好的Docker镜像有两种常用的方式分享给他人。

1、导出镜像文件(离线分享)

(1)导出镜像为.tar 文件

docker save -o 镜像名.tar <镜像名:标签>

如:

docker save -o embedded-docker.tar embedded-docker:v1.0

(2)导入镜像

docker load -i 镜像名.tar

2、通过私有仓库(如 Harbor)

通过私有仓库分享,这种方式适合企业内部或私密分享,这也是我们公司里在用的方式。

(1)搭建或使用私有仓库

例如安装 Harbor,配置仓库地址(如 http://your-harbor.com)。

(2)登录私有仓库

docker login your-harbor.com

(3)标记镜像并推送

docker tag <本地镜像名> your-harbor.com/namespace/镜像名:标签
docker push your-harbor.com/namespace/镜像名:标签

(4)他人拉取镜像

docker pull your-harbor.com/namespace/镜像名:标签

(5)运行Docker

sudo docker run -it -v 主机路径:容器工作路径 --name embedded-container your-harbor.com/namespace/镜像名:标签

最后

在嵌入式系统中,Docker 的应用趋势正随着物联网(IoT)、边缘计算和云原生技术的发展而快速演进。

本篇文章我们只是介绍了 Docker 搭建开发环境的优势。

使用Docker搭建嵌入式Linux开发环境,有研究表明,大致收益如:

  • 开发环境标准化时间从 4 小时缩短至 5 分钟
  • 跨平台编译成功率从 65% 提升至 98%
  • 新成员上手时间减少 70%

Docker技术在我们嵌入式中,还有着不少使用场景,如:

  • 资源效率优化:Docker 通过容器化技术实现应用隔离,相比虚拟机(VM)更轻量,适合嵌入式设备的低功耗、低算力场景。例如,ARM 架构的边缘设备通过 Docker 运行微服务,可减少资源占用。

  • 跨平台部署:Docker 镜像支持跨硬件平台(如 x86、ARM)的可移植性,开发者可在本地开发后直接部署到嵌入式设备,降低适配成本。

  • 与边缘计算的深度融合:Docker 容器承载 AI/ML 模型推理任务,结合边缘设备的本地处理能力(如 NPU 加速),实现实时决策(如工业质检、自动驾驶)。

Docker 在嵌入式领域的核心价值在于环境一致性、跨平台性和开发效率提升。未来将深度融入边缘计算、AI/ML 和云原生生态。我们需要关注轻量级容器技术优化、以充分发挥 Docker 在嵌入式场景中的潜力。


猜你喜欢:

一个非常轻量的嵌入式日志库!

一个面向对象的C语言框架!

一个非常轻量的嵌入式线程池库!

Github上热门 C 语言项目汇总!

实用 | 10分钟教你通过网页点灯

WiFi6+蓝牙+星闪,三合一开发板,真香!

嵌入式大杂烩 专注于嵌入式技术,包括但不限于C/C++、嵌入式、物联网、Linux等编程学习笔记,同时,内包含大量的学习资源。欢迎关注,一同交流学习,共同进步!
评论 (0)
  • 文/郭楚妤编辑/cc孙聪颖‍不久前,中国发展高层论坛 2025 年年会(CDF)刚刚落下帷幕。本次年会围绕 “全面释放发展动能,共促全球经济稳定增长” 这一主题,吸引了全球各界目光,众多重磅嘉宾的出席与发言成为舆论焦点。其中,韩国三星集团会长李在镕时隔两年的访华之行,更是引发广泛热议。一直以来,李在镕给外界的印象是不苟言笑。然而,在论坛开幕前一天,李在镕却意外打破固有形象。3 月 22 日,李在镕与高通公司总裁安蒙一同现身北京小米汽车工厂。小米方面极为重视此次会面,CEO 雷军亲自接待,小米副董
    华尔街科技眼 2025-04-01 19:39 209浏览
  • 引言在语音芯片设计中,输出电路的设计直接影响音频质量与系统稳定性。WT588系列语音芯片(如WT588F02B、WT588F02A/04A/08A等),因其高集成度与灵活性被广泛应用于智能设备。然而,不同型号在硬件设计上存在关键差异,尤其是DAC加功放输出电路的配置要求。本文将从硬件架构、电路设计要点及选型建议三方面,解析WT588F02B与F02A/04A/08A的核心区别,帮助开发者高效完成产品设计。一、核心硬件差异对比WT588F02B与F02A/04A/08A系列芯片均支持PWM直推喇叭
    广州唯创电子 2025-04-01 08:53 188浏览
  • 据先科电子官方信息,其产品包装标签将于2024年5月1日进行全面升级。作为电子元器件行业资讯平台,大鱼芯城为您梳理本次变更的核心内容及影响:一、标签变更核心要点标签整合与环保优化变更前:卷盘、内盒及外箱需分别粘贴2张标签(含独立环保标识)。变更后:环保标识(RoHS/HAF/PbF)整合至单张标签,减少重复贴标流程。标签尺寸调整卷盘/内盒标签:尺寸由5030mm升级至**8040mm**,信息展示更清晰。外箱标签:尺寸统一为8040mm(原7040mm),提升一致性。关键信息新增新增LOT批次编
    大鱼芯城 2025-04-01 15:02 196浏览
  • 提到“质量”这两个字,我们不会忘记那些奠定基础的大师们:休哈特、戴明、朱兰、克劳士比、费根堡姆、石川馨、田口玄一……正是他们的思想和实践,构筑了现代质量管理的核心体系,也深远影响了无数企业和管理者。今天,就让我们一同致敬这些质量管理的先驱!(最近流行『吉卜力风格』AI插图,我们也来玩玩用『吉卜力风格』重绘质量大师画象)1. 休哈特:统计质量控制的奠基者沃尔特·A·休哈特,美国工程师、统计学家,被誉为“统计质量控制之父”。1924年,他提出世界上第一张控制图,并于1931年出版《产品制造质量的经济
    优思学院 2025-04-01 14:02 145浏览
  • 退火炉,作为热处理设备的一种,广泛应用于各种金属材料的退火处理。那么,退火炉究竟是干嘛用的呢?一、退火炉的主要用途退火炉主要用于金属材料(如钢、铁、铜等)的热处理,通过退火工艺改善材料的机械性能,消除内应力和组织缺陷,提高材料的塑性和韧性。退火过程中,材料被加热到一定温度后保持一段时间,然后以适当的速度冷却,以达到改善材料性能的目的。二、退火炉的工作原理退火炉通过电热元件(如电阻丝、硅碳棒等)或燃气燃烧器加热炉膛,使炉内温度达到所需的退火温度。在退火过程中,炉内的温度、加热速度和冷却速度都可以根
    锦正茂科技 2025-04-02 10:13 64浏览
  • 职场之路并非一帆风顺,从初入职场的新人成长为团队中不可或缺的骨干,背后需要经历一系列内在的蜕变。许多人误以为只需努力工作便能顺利晋升,其实核心在于思维方式的更新。走出舒适区、打破旧有框架,正是让自己与众不同的重要法宝。在这条道路上,你不只需要扎实的技能,更需要敏锐的观察力、不断自省的精神和前瞻的格局。今天,就来聊聊那改变命运的三大思维转变,让你在职场上稳步前行。工作初期,总会遇到各式各样的难题。最初,我们习惯于围绕手头任务来制定计划,专注于眼前的目标。然而,职场的竞争从来不是单打独斗,而是团队协
    优思学院 2025-04-01 17:29 198浏览
  • 升职这件事,说到底不是单纯靠“干得多”或者“喊得响”。你可能也看过不少人,能力一般,甚至没你努力,却升得飞快;而你,日复一日地拼命干活,升职这两个字却始终离你有点远。这种“不公平”的感觉,其实在很多职场人心里都曾经出现过。但你有没有想过,问题可能就藏在一些你“没当回事”的小细节里?今天,我们就来聊聊你升职总是比别人慢,可能是因为这三个被你忽略的小细节。第一:你做得多,但说得少你可能是那种“默默付出型”的员工。项目来了接着干,困难来了顶上去,别人不愿意做的事情你都做了。但问题是,这些事情你做了,却
    优思学院 2025-03-31 14:58 114浏览
  •        在“软件定义汽车”的时代浪潮下,车载软件的重要性日益凸显,软件在整车成本中的比重逐步攀升,已成为汽车智能化、网联化、电动化发展的核心驱动力。车载软件的质量直接关系到车辆的安全性、可靠性以及用户体验,因此,构建一套科学、严谨、高效的车载软件研发流程,确保软件质量的稳定性和可控性,已成为行业共识和迫切需求。       作为汽车电子系统领域的杰出企业,经纬恒润深刻理解车载软件研发的复杂性和挑战性,致力于为O
    经纬恒润 2025-03-31 16:48 91浏览
  • 文/Leon编辑/cc孙聪颖‍步入 2025 年,国家进一步加大促消费、扩内需的政策力度,家电国补政策将持续贯穿全年。这一利好举措,为行业发展注入强劲的增长动力。(详情见:2025:消费提振要靠国补还是“看不见的手”?)但与此同时,也对家电企业在战略规划、产品打造以及市场营销等多个维度,提出了更为严苛的要求。在刚刚落幕的中国家电及消费电子博览会(AWE)上,家电行业的竞争呈现出胶着的态势,各大品牌为在激烈的市场竞争中脱颖而出,纷纷加大产品研发投入,积极推出新产品,试图提升产品附加值与市场竞争力。
    华尔街科技眼 2025-04-01 19:49 206浏览
  • 北京贞光科技有限公司作为紫光同芯授权代理商,专注于为客户提供车规级安全芯片的硬件供应与软件SDK一站式解决方案,同时配备专业技术团队,为选型及定制需求提供现场指导与支持。随着新能源汽车渗透率突破40%(中汽协2024数据),智能驾驶向L3+快速演进,车规级MCU正迎来技术范式变革。作为汽车电子系统的"神经中枢",通过AEC-Q100 Grade 1认证的MCU芯片需在-40℃~150℃极端温度下保持μs级响应精度,同时满足ISO 26262 ASIL-D功能安全要求。在集中式
    贞光科技 2025-04-02 14:50 120浏览
  • 探针本身不需要对焦。探针的工作原理是通过接触被测物体表面来传递电信号,其精度和使用效果取决于探针的材质、形状以及与检测设备的匹配度,而非对焦操作。一、探针的工作原理探针是检测设备中的重要部件,常用于电子显微镜、坐标测量机等精密仪器中。其工作原理主要是通过接触被测物体的表面,将接触点的位置信息或电信号传递给检测设备,从而实现对物体表面形貌、尺寸或电性能等参数的测量。在这个过程中,探针的精度和稳定性对测量结果具有至关重要的影响。二、探针的操作要求在使用探针进行测量时,需要确保探针与被测物体表面的良好
    锦正茂科技 2025-04-02 10:41 69浏览
  • 引言随着物联网和智能设备的快速发展,语音交互技术逐渐成为提升用户体验的核心功能之一。在此背景下,WT588E02B-8S语音芯片,凭借其创新的远程更新(OTA)功能、灵活定制能力及高集成度设计,成为智能设备语音方案的优选。本文将从技术特性、远程更新机制及典型应用场景三方面,解析该芯片的技术优势与实际应用价值。一、WT588E02B-8S语音芯片的核心技术特性高性能硬件架构WT588E02B-8S采用16位DSP内核,内部振荡频率达32MHz,支持16位PWM/DAC输出,可直接驱动8Ω/0.5W
    广州唯创电子 2025-04-01 08:38 158浏览
  • 随着汽车向智能化、场景化加速演进,智能座舱已成为人车交互的核心承载。从驾驶员注意力监测到儿童遗留检测,从乘员识别到安全带状态判断,座舱内的每一次行为都蕴含着巨大的安全与体验价值。然而,这些感知系统要在多样驾驶行为、复杂座舱布局和极端光照条件下持续稳定运行,传统的真实数据采集方式已难以支撑其开发迭代需求。智能座舱的技术演进,正由“采集驱动”转向“仿真驱动”。一、智能座舱仿真的挑战与突破图1:座舱实例图智能座舱中的AI系统,不仅需要理解驾驶员的行为和状态,还要同时感知乘员、儿童、宠物乃至环境中的潜在
    康谋 2025-04-02 10:23 96浏览
  • REACH和RoHS欧盟两项重要的环保法规有什么区别?适用范围有哪些?如何办理?REACH和RoHS是欧盟两项重要的环保法规,主要区别如下:一、核心定义与目标RoHS全称为《关于限制在电子电器设备中使用某些有害成分的指令》,旨在限制电子电器产品中的铅(Pb)、汞(Hg)、镉(Cd)、六价铬(Cr6+)、多溴联苯(PBBs)和多溴二苯醚(PBDEs)共6种物质,通过限制特定材料使用保障健康和环境安全REACH全称为《化学品的注册、评估、授权和限制》,覆盖欧盟市场所有化学品(食品和药品除外),通过登
    张工13144450251 2025-03-31 21:18 143浏览
  • 在智能交互设备快速发展的今天,语音芯片作为人机交互的核心组件,其性能直接影响用户体验与产品竞争力。WT588F02B-8S语音芯片,凭借其静态功耗<5μA的卓越低功耗特性,成为物联网、智能家居、工业自动化等领域的理想选择,为设备赋予“听得懂、说得清”的智能化能力。一、核心优势:低功耗与高性能的完美结合超低待机功耗WT588F02B-8S在休眠模式下待机电流仅为5μA以下,显著延长了电池供电设备的续航能力。例如,在电子锁、气体检测仪等需长期待机的场景中,用户无需频繁更换电池,降低了维护成本。灵活的
    广州唯创电子 2025-04-02 08:34 148浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦