有没有办法将仅x86的docker镜像转换为多平台镜像?

问题描述 投票:0回答:1

最新的docker注册表/引擎支持“清单列表”功能,允许用户通过注册表中的单独输入来引用具有不同CPU架构,操作系统和其他特征的图像。

所以说我在我的存储库中有一个遗留的x86映像,不幸的是它在以前作为容器运行时被连接(连续的docker提交),这意味着没有可用的Dockerfile。有没有办法我可以转换这个x86-only图像来支持manifest list而无需重建它?

docker cross-platform manifest
1个回答
1
投票

Docker可以export从图像开始的容器的内容。然后可以创建一个新的图像FROM scratchADDs内容回来。

Steps

docker export将创建一个tar文件,其中包含从映像创建的容器的完整内容。

$ CID=$(docker create myimage)
$ docker export -o myimage.tar $CID
$ docker rm $CID

构建一个新的Dockerfile FROM scratchADDs导出的内容tar文件。

FROM scratch
ADD myimage.tar /

可以通过DockerfileENTRYPOINT查询CMD的任何扩展元数据,如VOLUMESinspecthistory

$ docker image inspect myimage -f '{{json .Config}}' | jq
{
  "Hostname": "",
  "Domainname": "",
  "User": "",
  "AttachStdin": false,
  "AttachStdout": false,
  "AttachStderr": false,
  "ExposedPorts": {
    "27017/tcp": {}
  },
  "Tty": false,
  "OpenStdin": false,
  "StdinOnce": false,
  "Env": [
    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
    "GOSU_VERSION=1.10",
    "JSYAML_VERSION=3.10.0",
    "GPG_KEYS=2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5",
    "MONGO_PACKAGE=mongodb-org",
    "MONGO_REPO=repo.mongodb.org",
    "MONGO_MAJOR=3.6",
    "MONGO_VERSION=3.6.3"
  ],
  "Cmd": [
    "mongod"
  ],
  "ArgsEscaped": true,
  "Image": "sha256:bac19e2cfd49108534b108c101a68a2046090d25da581ae04dc020aac93b4e31",
  "Volumes": {
    "/data/configdb": {},
    "/data/db": {}
  },
  "WorkingDir": "",
  "Entrypoint": [
    "docker-entrypoint.sh"
  ],
  "OnBuild": [],
  "Labels": null
}

要么

docker image history myimage --no-trunc
© www.soinside.com 2019 - 2024. All rights reserved.