isbase
V2EX  ›  问与答

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

  •  
  •   isbase ·
    PRO
    · Nov 18, 2022 · 2202 views
    This topic created in 1278 days ago, the information mentioned may be changed or developed.

    很多 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
    
    Supplement 1  ·  Nov 18, 2022

    目前已用 skopeo 成功解决,暂时没有发现问题

    5 replies    2022-11-18 13:33:57 +08:00
    messense
        1
    messense  
       Nov 18, 2022
    https://github.com/containers/skopeo

    `skopeo copy --multi-arch all`
    FakNoCNName
        2
    FakNoCNName  
       Nov 18, 2022   ❤️ 1
    建一个 dockerfile:
    ```
    FROM private-registry/node:18
    ```

    用 buildx 重制推送:

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

    ```
    mritd
        3
    mritd  
       Nov 18, 2022 via iPhone   ❤️ 1
    nerdctl 加一个 —all-platforms
    isbase
        4
    isbase  
    OP
    PRO
       Nov 18, 2022
    感谢各位 @messense @FakNoCNName @mritd 问题已解决
    isbase
        5
    isbase  
    OP
    PRO
       Nov 18, 2022
    不小心把 @messense 的回复隐藏了,v2ex 似乎恢复不了隐藏的回复 @Livid
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2979 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 52ms · UTC 14:30 · PVG 22:30 · LAX 07:30 · JFK 10:30
    ♥ Do have faith in what you're doing.