|
| 1 | +<PageHeader icon="🐳" title="Docker 镜像发布" description="IMX-Forge 预构建 Docker 镜像发布流程,用户可直接拉取使用" /> |
| 2 | + |
| 3 | +## 概述 |
| 4 | + |
| 5 | +IMX-Forge 提供**预构建的 Docker 镜像**,用户无需手动构建,可直接拉取使用。镜像通过 GitHub Actions 自动构建并发布到 GitHub Container Registry。 |
| 6 | + |
| 7 | +## 镜像标签策略 |
| 8 | + |
| 9 | +| 标签 | 获取方式 | 稳定性 | 用途 | |
| 10 | +|------|----------|--------|------| |
| 11 | +| `latest` | 手动触发 / 发布 tag | <Badge type="tip" text="稳定" /> | 推荐给大多数用户 | |
| 12 | +| `preview` | 手动触发 | <Badge type="warning" text="实验性" /> | 测试新功能、尝鲜 | |
| 13 | +| `v1.0.0` 等 | 发布 tag | <Badge type="tip" text="稳定" /> | 锁定特定版本 | |
| 14 | + |
| 15 | +## 发布流程 |
| 16 | + |
| 17 | +### 开发者工作流 |
| 18 | + |
| 19 | +<StepFlow> |
| 20 | + <StepItem icon="💻" title="开发完成" description="推送到 main 分支" /> |
| 21 | + <StepItem icon="⚡" title="CI 验证" description="等待 CI 测试通过" /> |
| 22 | + <StepItem icon="🐳" title="构建 preview" description="手动触发 preview 镜像" /> |
| 23 | + <StepItem icon="🧪" title="本地测试" description="拉取 preview 验证" /> |
| 24 | + <StepItem icon="✅" title="构建 latest" description="手动触发 latest 镜像" /> |
| 25 | + <StepItem icon="🏷️" title="正式发布" description="创建版本 tag" /> |
| 26 | +</StepFlow> |
| 27 | + |
| 28 | +### 手动触发构建 |
| 29 | + |
| 30 | +1. 进入 [GitHub Actions](https://github.com/Awesome-Embedded-Learning-Studio/imx-forge/actions) |
| 31 | +2. 选择 **Docker Image Publish** workflow |
| 32 | +3. 点击 **Run workflow** |
| 33 | +4. 选择标签: |
| 34 | + - `latest` - 稳定版本 |
| 35 | + - `preview` - 预览/测试版本 |
| 36 | + |
| 37 | +### 正式发布 |
| 38 | + |
| 39 | +```bash |
| 40 | +# 创建版本 tag |
| 41 | +git tag v1.0.0 |
| 42 | +git push origin v1.0.0 |
| 43 | + |
| 44 | +# 自动触发构建:v1.0.0, v1, latest |
| 45 | +``` |
| 46 | + |
| 47 | +## 镜像内容 |
| 48 | + |
| 49 | +镜像基于 **Ubuntu 24.04**,包含: |
| 50 | + |
| 51 | +- **ARM GNU Toolchain 15.2.rel1** - 交叉编译工具链 |
| 52 | +- **构建工具** - build-essential, cmake, ninja-build, meson |
| 53 | +- **内核工具** - bison, flex, device-tree-compiler |
| 54 | +- **U-Boot 工具** - u-boot-tools |
| 55 | +- **Python 工具** - pyelftools |
| 56 | +- **SSL/TLS** - libssl-dev, libgnutls28-dev |
| 57 | +- **音频库** - libpulse-dev, libasound2-dev |
| 58 | + |
| 59 | +镜像大小:约 **2GB**(截至文档更新时,实际大小可能存在波动) |
| 60 | + |
| 61 | +## 用户使用 |
| 62 | + |
| 63 | +### 拉取镜像 |
| 64 | + |
| 65 | +```bash |
| 66 | +# 稳定版(推荐) |
| 67 | +docker pull ghcr.io/awesome-embedded-learning-studio/imx-forge:latest |
| 68 | + |
| 69 | +# 预览版(尝鲜) |
| 70 | +docker pull ghcr.io/awesome-embedded-learning-studio/imx-forge:preview |
| 71 | + |
| 72 | +# 特定版本 |
| 73 | +docker pull ghcr.io/awesome-embedded-learning-studio/imx-forge:v1.0.0 |
| 74 | +``` |
| 75 | + |
| 76 | +### 运行容器 |
| 77 | + |
| 78 | +```bash |
| 79 | +# 基本用法 |
| 80 | +docker run -it --rm -v $(pwd):/workspace \ |
| 81 | + ghcr.io/awesome-embedded-learning-studio/imx-forge:latest |
| 82 | + |
| 83 | +# 使用 USB 设备(烧录) |
| 84 | +docker run -it --rm --privileged -v /dev:/dev \ |
| 85 | + -v $(pwd):/workspace \ |
| 86 | + ghcr.io/awesome-embedded-learning-studio/imx-forge:latest |
| 87 | +``` |
| 88 | + |
| 89 | +### 验证镜像 |
| 90 | + |
| 91 | +```bash |
| 92 | +# 验证工具链 |
| 93 | +docker run --rm ghcr.io/awesome-embedded-learning-studio/imx-forge:latest \ |
| 94 | + arm-none-linux-gnueabihf-gcc --version |
| 95 | + |
| 96 | +# 预期输出 |
| 97 | +# arm-none-linux-gnueabihf-gcc (Arm GNU Toolchain 15.2.Rel1) 15.2.1 20251203 |
| 98 | +``` |
| 99 | + |
| 100 | +## 国内用户加速 |
| 101 | + |
| 102 | +如果 ghcr.io 拉取较慢,可配置 Docker 镜像加速: |
| 103 | + |
| 104 | +```bash |
| 105 | +sudo tee /etc/docker/daemon.json <<-'EOF' |
| 106 | +{ |
| 107 | + "registry-mirrors": [ |
| 108 | + "https://docker.mirrors.ustc.edu.cn", |
| 109 | + "https://hub-mirror.c.163.com" |
| 110 | + ] |
| 111 | +} |
| 112 | +EOF |
| 113 | + |
| 114 | +sudo systemctl daemon-reload |
| 115 | +sudo systemctl restart docker |
| 116 | +``` |
| 117 | + |
| 118 | +::: warning 注意 |
| 119 | +大部分国内镜像加速器主要针对 Docker Hub,对 ghcr.io 的加速效果有限。如果仍然较慢,建议使用本地构建方式。 |
| 120 | +::: |
| 121 | + |
| 122 | +## 故障排查 |
| 123 | + |
| 124 | +### 问题:拉取失败 |
| 125 | + |
| 126 | +**原因**:镜像不存在或标签错误 |
| 127 | + |
| 128 | +**解决**: |
| 129 | +```bash |
| 130 | +# 查看可用标签 |
| 131 | +gh api repos/Awesome-Embedded-Learning-Studio/imx-forge/packages | jq -r '.[].name' |
| 132 | +``` |
| 133 | + |
| 134 | +### 问题:工具链不工作 |
| 135 | + |
| 136 | +**原因**:镜像损坏或构建问题 |
| 137 | + |
| 138 | +**解决**:重新构建镜像或使用其他版本 |
| 139 | + |
| 140 | +## 相关链接 |
| 141 | + |
| 142 | +- [Docker 开发环境指南](../tutorial/docker/02_imx_forge_docker_guide.md) |
| 143 | +- [GitHub Actions](https://github.com/Awesome-Embedded-Learning-Studio/imx-forge/actions) |
| 144 | +- [GitHub Container Registry](https://github.com/Awesome-Embedded-Learning-Studio/imx-forge/pkgs/container/imx-forge) |
| 145 | + |
| 146 | +<ChapterNav variant="sub"> |
| 147 | + <ChapterLink href="index.md" variant="sub">← 返回 CI/CD 文档</ChapterLink> |
| 148 | +</ChapterNav> |
0 commit comments