有没有办法将仅限x86的docker映像转换为多平台映像?
最新的docker注册表/引擎支持“清单列表”功能,允许用户通过在注册表中单独输入来引用具有不同CPU架构、操作系统和其他特征的图像 这么说来,我的存储库中有一个只支持x86的旧映像,不幸的是,它在上一次作为容器运行(连续docker提交)期间被更改,这意味着没有可用的Dockerfile。是否有一种方法可以将此仅x86映像转换为支持有没有办法将仅限x86的docker映像转换为多平台映像?,docker,cross-platform,manifest,Docker,Cross Platform,Manifest,最新的docker注册表/引擎支持“清单列表”功能,允许用户通过在注册表中单独输入来引用具有不同CPU架构、操作系统和其他特征的图像 这么说来,我的存储库中有一个只支持x86的旧映像,不幸的是,它在上一次作为容器运行(连续docker提交)期间被更改,这意味着没有可用的Dockerfile。是否有一种方法可以将此仅x86映像转换为支持清单列表,而无需重新构建它?Docker可以从映像启动容器的内容。然后可以创建一个新的图像,该图像将内容添加回去 台阶 将创建一个tar文件,其中包含从图像创建的容
清单列表
,而无需重新构建它?Docker可以从映像启动容器的内容。然后可以创建一个新的图像,该图像将内容添加回去
台阶
将创建一个tar文件,其中包含从图像创建的容器的完整内容
$ CID=$(docker create myimage)
$ docker export -o myimage.tar $CID
$ docker rm $CID
构建一个新的Dockerfile,将导出的内容添加回tar文件
FROM scratch
ADD myimage.tar /
Dockerfile
的任何扩展元数据,如ENTRYPOINT
、CMD
或卷
,都可以通过inspect
或history
查询:
$ 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
}
或
容器的内容从图像开始,并从该图像创建一个新图像
添加
s返回内容。尝试过,这对我很有效。马特,非常感谢你的提示!
docker image history myimage --no-trunc