如何将一个 docker 镜像的所有 cpu 架构变体移动到其他仓库

2022-11-18 10:39:17 +08:00
 isbase

很多 docker 镜像,例如 node:18 默认是支持多 cpu 架构的,例如下面的写法可以在 arm64 和 amd64 的设备上运行:

FROM node:18

问题来了,我如何将 node:18 的所有变体移动到一个新的仓库,之后能这么用:

FROM private-registry/node:18

上面的写法要能同时在多种 cpu 架构的设备上运行,就和官方镜像完全一样。

麻烦一点的解法

# 搬运 arm64 架构变体
docker pull node:18 --platform linux/arm64
docker tag node:18 new-registry/node:18-arm64
docker push new-registry/node:18-arm64

# 搬运 amd64 架构变体

```shell
docker pull node:18 --platform linux/amd64
docker tag node:18 new-registry/node:18-amd64
docker push new-registry/node:18-amd64

用的时候 dockerfile 里得手动区分不同的 cpu 架构:

amd64

FROM new-registry/node:18-amd64

arm64

FROM new-registry/node:18-arm64
1157 次点击
所在节点    问与答
5 条回复
messense
2022-11-18 10:49:13 +08:00
https://github.com/containers/skopeo

`skopeo copy --multi-arch all`
FakNoCNName
2022-11-18 10:51:28 +08:00
建一个 dockerfile:
```
FROM private-registry/node:18
```

用 buildx 重制推送:

```
docker buildx build -f Dockerfile -t YourRegistry:Port/Repo:Tag --platform=PlatForms . --push

```
mritd
2022-11-18 12:57:26 +08:00
nerdctl 加一个 —all-platforms
isbase
2022-11-18 13:32:31 +08:00
感谢各位 @messense @FakNoCNName @mritd 问题已解决
isbase
2022-11-18 13:33:57 +08:00
不小心把 @messense 的回复隐藏了,v2ex 似乎恢复不了隐藏的回复 @Livid

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/896144

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX