在没有原始 Docker 文件的情况下为另一个体系结构构建现有 Docker 图像

Build existing Docker image for another architecture without the original Dockerfile

我有一个 linux/amd64 的旧 Docker 图像,我需要为 linux/arm64 构建(使其在 M1 Mac 上 运行 ]).

问题是没有Dockerfile。这些年来,图像已使用 docker commit 进行了更新,因为对其进行了更改。

有没有办法拍摄新的快照,但对于另一种架构(我猜不是)?否则我还有什么选择?

问题图像是用于本地开发的 Cassandra 自定义设置,我真的不确定它有什么配置,所以我想尽可能避免从头开始设置它。

为了以可读的方式从 docker history 获取信息,以下 (bash) 命令帮助了我。只需将您的图片和标签放在 --no-trunc

之后
docker history --no-trunc IMAGE:TAG | tac | tr -s ' ' | cut -d " " -f 5- | sed 's,^/bin/sh -c #(nop) ,,g' | sed 's,^/bin/sh -c,RUN,g' | sed 's,
 && ,\n  & ,g' | sed 's,\s*[0-9]*[\.]*[0-9]*\s*[kMG]*B\s*$,,g' | head -n -1

还有一张图片作为一个不错的工具:Reference on Docker Hub

基本上:

alias dfimage="docker run -v /var/run/docker.sock:/var/run/docker.sock --rm alpine/dfimage"
dfimage IMAGE:TAG