Skip to content

Docker 教程 ​

嵌入式开发的头一道门槛常常不在代码而在环境:工具链版本、依赖库、设备权限,随便一样都够咱们耗掉一个下午。本卷把整套编译环境打进 Docker 镜像,拉下来就能编 U-Boot、编内核;上承入门准备卷的开发准备,下接 U-Boot 教程卷的引导移植,是三条装环境路线里最省事的一条。

前置知识·环境

  • 前置章:建议您先读完入门准备,至少完成仓库克隆与板子连线
  • 仓库实路径:docker/,Dockerfile、Dockerfile.cn、daemon.json、setup-mirror.sh、README.md 全在这里
  • 路径上下文:本篇是 document/tutorial/docker/ 的卷首页;咱们操作的对象是 imx-forge 源码仓库,交叉编译用镜像内的 ARM GNU Toolchain 15.2.rel1,宿主机只需要装好 Docker 本身

装环境的三条路线 ​

同一套 imx-forge 源码,把编译环境搭起来有三条路。手动路线在入门准备里带着您逐项安装工具链与依赖,好处是每个组件都过目;工作流卷走的是 WSL2 + Remote-SSH 开发台路线,环境仍装在本地 WSL,只是编辑器经 SSH 接入,串口与传文件的配置同卷配齐;Docker 路线就是本卷,镜像里预装了一切,宿主机保持干净。

一句话说清谁该走 Docker 路线:如果您只想尽快把内核编出来,不想在宿主机铺一整套交叉工具链,或者您在 Windows 上透过 WSL2 开发,走这儿;想把环境亲手装一遍、顺带弄明白每层依赖的朋友,去 start 卷更合适。

路线做法适合谁
Docker 路线(本卷)拉取或构建镜像,容器内自带工具链与依赖求快、宿主机要干净、Windows + WSL2 用户
手动路线(start 卷)宿主机逐项安装工具链与依赖想把环境每一层都弄明白的您
WSL2 + Remote-SSH 路线(workflow 卷)环境装在本地 WSL,编辑器经 SSH 接入想把编辑器、串口、传文件配成顺手开发台的朋友

镜像里有什么,怎么进去 ​

笔者在本仓库实际清点过 docker/ 目录,内容如下:

text
# 主机 ~/imx-forge
$ ls docker/
Dockerfile
Dockerfile.cn
README.md
daemon.json
setup-mirror.sh

镜像以 Ubuntu 24.04 为底,预装 ARM GNU Toolchain 15.2.rel1 与全部编译依赖;Dockerfile.cn 是国内加速版,daemon.json 是镜像加速器配置。正式发布的预构建镜像放在 ghcr.io,当前版本 v1.0.4(2026-06-15 发布)。有个细节要留意:ghcr 上的镜像 tag 比仓库的 git tag 少个 v 前缀,锁定版本得写 1.0.4。不过 1.0.4 镜像不含 2026-07-29 的 fdisk 依赖修复,您要跑 release-all.sh 全流程出镜像的话,请改用已含修复的 latest,或按后文本地构建。咱们进环境只要两条命令:

bash
# 主机 ~/imx-forge
docker pull ghcr.io/awesome-embedded-learning-studio/imx-forge:latest
docker run -it --rm -v $(pwd):/workspace ghcr.io/awesome-embedded-learning-studio/imx-forge:latest

不愿用预构建镜像的话,在 docker/ 目录里执行 DOCKER_BUILDKIT=1 docker build -t imx-forge:latest . 本地构建,README 标称约 5 到 10 分钟。进容器后仓库出现在 /workspace,咱们可以直接跑 build-uboot.sh、build-linux.sh、build-buildroot.sh,一键入口是 release-all.sh;烧录要用 USB 设备时,README 的做法是 run 加 --privileged 并把 /dev 挂进来。

未实测标注

Windows 侧 Docker Desktop 与 WSL2 集成属图形界面安装流程,本环境(Linux 主机)验证不了;具体步骤以 Docker 基础知识 的 WSL2 安装一节为准,容器行为以您本机实测为准。

学习路径与速查 ​

学习顺序上笔者建议:完全没碰过容器的朋友先过 Docker 基础知识,把镜像、容器、卷挂载混个脸熟;急着开工就直接翻 IMX-Forge Docker 开发指南 的快速开始,编完第一个内核再回头补概念,这样吸收最快。

性能和调试是您最关心的两件事:容器接近原生,编译速度与宿主机几乎相同;GDB、串口、网络启动,咱们在容器里也都能做。真正的坑多半出在设备透传和网络配置,速查如下:

现象根因解法
容器里看不到板子串口USB 设备默认不进容器run 时加 --privileged 并挂载 /dev
构建镜像拉依赖超时默认软件源在境外改用 Dockerfile.cn,或按 daemon.json 配加速器
容器内改动重启后消失可写层随 --rm 销毁改动放 /workspace,由卷挂载落回宿主机

继续学习 ​

v1.0.4-37-gc79a127 · c79a127 · 2026-09-29