如何将docker镜像从一个主机复制到另一个主机?

时间:2016-12-15 00:01:47

标签: docker

假设我有10个泊坞窗图像。在所有10个泊坞窗图像中,许多层都是相似的。

使用item::intList时,保存的图像是独立的,因此图像尺寸会变大。 (~10张图片大小约为9GB)

拉出泊坞窗图片后,我探索:

docker save -o

无论如何都有效地导出图像?

我还尝试将aufs和image文件夹复制粘贴到新主机上。但有些容器无法启动。

检查日志:

/var/lib/docker --- aufs (~3GB only) --- containers (Few KBs) --- image (Few KBs) --- ... --- mnt

注意:我已经提到了this。这个问题不重复。它没有解决我上面提到的用例。

1 个答案:

答案 0 :(得分:2)

我不知道这是否是正确的做法。但是下面的方法对我有用。我用30 Kolla Openstack Docker Images进行了测试。

为什么我对java.lang.NoClassDefFoundError: com/tinkerpop/blueprints/impls/orient/OrientGraphFactory at edu.ucla.sspace.doc.reader.MyUI.init(MyUI.java:36) at com.vaadin.ui.UI.doInit(UI.java:682) at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:214) at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:74) at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:41) at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1409) at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:364) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1100) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:687) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: java.lang.ClassNotFoundException: com.tinkerpop.blueprints.impls.orient.OrientGraphFactory at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167) 有疑问?

正如我所说,我有30个码头图像。我使用docker save保存。总大小为15 GB,这对于便携而言太大了。

我做了什么?

Long Story Short:我仔细复制了aufs和image文件夹。

第1步:

在要导出的计算机中:确保只有图像(要导出)。删除所有正在运行和停止的容器。

在您要导入的计算机中:确保您没有任何图像和容器。

第2步: docker save -o <save image to path> <image name>它会将您的所有图片图层及其数据库压缩到一个tar文件中。 尺寸仅为3 GB

第3步:在计算机中,您要导入图像,

tar -cvf docker-images.tar /var/lib/docker/aufs /var/lib/docker/image

现在重启docker。 tar -xvf docker-images.tar -C /var/lib/docker/