Docker:将docker层组合成图像
Docker: combine docker layers into image
这个问题的起源是从 docker 私有注册中心拉取超级慢。
然后我通过registry remote API发现wget
的速度是可以的
现在我得到一张图片的图层。如何将它作为图像加载到我的 docker 守护进程?
ps:
我试过了docker load < layer.0
,其中layer.0是所有层的基础图像。
结果如下。
FATA[0015] Error: open
/home/docker/data/docker/tmp/docker-import-087506163/repo/etc/json: no
such file or directory
所有层都是不同的,您必须加载它们才能使 "image" 完整。没有包含所有图层的单个图像文件。这是设计使然,因为它允许共享这些层作为后续图像的基础。
您可以通过 docker 导出然后 docker 导入来拼合图像。这将采用所有现有层并将它们作为单个文件系统映像导出到 tarball 中。然后 import 将把它作为图像再次导入。
步骤:
docker run --name mycontainer
创建容器的镜像(容器名mycontainer只是举例)
docker export --output=mycontainer.tar mycontainer
压缩包的容器(mycontainer.tar 只是一个例子)
cat mycontainer.tar | docker import - mynewimage:imported
压缩包(图像名称 mynewimage:imported 只是一个例子)
文档:
这个问题的起源是从 docker 私有注册中心拉取超级慢。
然后我通过registry remote API发现wget
的速度是可以的
现在我得到一张图片的图层。如何将它作为图像加载到我的 docker 守护进程?
ps:
我试过了docker load < layer.0
,其中layer.0是所有层的基础图像。
结果如下。
FATA[0015] Error: open /home/docker/data/docker/tmp/docker-import-087506163/repo/etc/json: no such file or directory
所有层都是不同的,您必须加载它们才能使 "image" 完整。没有包含所有图层的单个图像文件。这是设计使然,因为它允许共享这些层作为后续图像的基础。
您可以通过 docker 导出然后 docker 导入来拼合图像。这将采用所有现有层并将它们作为单个文件系统映像导出到 tarball 中。然后 import 将把它作为图像再次导入。
步骤:
docker run --name mycontainer
创建容器的镜像(容器名mycontainer只是举例)
docker export --output=mycontainer.tar mycontainer
压缩包的容器(mycontainer.tar 只是一个例子)
cat mycontainer.tar | docker import - mynewimage:imported
压缩包(图像名称 mynewimage:imported 只是一个例子)
文档: