我正在测试一个 GitHub 工作流,该工作流检查代码是否在 arm64 上编译,使用 Linux/aarch64 Docker 容器进行构建。我知道 GitHub 容器仅适用于 x86,但是我想知道是否可以在 GitHub 管理的工作流上的 docker 中执行多架构图像。
- 我已经按照https://www.docker.com/blog/multi-arch-images/为 linux/amd64、linux/arm64 构建了一个带有“docker buildx”的映像
- 打包的图像清单显示它是多架构的,并且手动测试它可以工作。
细节
- 图片https://github.com/donsbot/hsthrift/pkgs/container/hsthrift%2Fci-base/13306041?tag=ghcup-arm64v8
- 启动此https://github.com/facebookincubator/hsthrift/actions/runs/1706096700/workflow的工作流程
在 GitHub 上执行 CI 作业并且容器初始化正常:https ://github.com/facebookincubator/hsthrift/runs/4835956150?check_suite_focus=true#step:2:14
/usr/bin/docker pull ghcr.io/donsbot/hsthrift/ci-base:ghcup-arm64v8
ghcup-arm64v8: Pulling from donsbot/hsthrift/ci-base
...
Digest: sha256:4c09341793d78efb74ad751b55152637d00b6297049458923825368fffb5485d
Status: Downloaded newer image for ghcr.io/donsbot/hsthrift/ci-base:ghcup-arm64v8
ghcr.io/donsbot/hsthrift/ci-base:ghcup-arm64v8
/usr/bin/docker create .. --cpus 2 ... --entrypoint "tail" ghcr.io/donsbot/hsthrift/ci-base:ghcup-arm64v8 "-f" "/dev/null"
a63c28c54f278781f85a4ca85e3b1f5c3dd7c0d6b125fbcfd0e1d2f57ad0b0ef
/usr/bin/docker start a63c28c54f278781f85a4ca85e3b1f5c3dd7c0d6b125fbcfd0e1d2f57ad0b0ef
a63c28c54f278781f85a4ca85e3b1f5c3dd7c0d6b125fbcfd0e1d2f57ad0b0ef
/usr/bin/docker ps --all --filter id=a63c28c54f278781f85a4ca85e3b1f5c3dd7c0d6b125fbcfd0e1d2f57ad0b0ef --filter status=running --no-trunc --format "{{.ID}} {{.Status}}"
a63c28c54f278781f85a4ca85e3b1f5c3dd7c0d6b125fbcfd0e1d2f57ad0b0ef Up Less than a second
/usr/bin/docker inspect --format "{{range .Config.Env}}{{println .}}{{end}}" a63c28c54f278781f85a4ca85e3b1f5c3dd7c0d6b125fbcfd0e1d2f57ad0b0ef
CI=true
HOME=/github/home
GITHUB_ACTIONS=true
PATH=/root/.ghcup/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
TZ=Europe/London
LD_LIBRARY_PATH=/usr/local/lib:/usr/lib/x86_64-linux-gnu:
所以一切看起来都很好,很开心。但由于 VM 未运行,该作业在第一个 exec 步骤中失败。
来自守护程序的错误响应:容器 a63c28c54f278781f85a4ca85e3b1f5c3dd7c0d6b125fbcfd0e1d2f57ad0b0ef 未运行
这可以在各种主机上本地成功运行。
问题
- 我怎样才能在这里调试容器发生了什么?
- GitHub 上的 x86 Docker 容器通常支持多架构图像吗?(其他例子)