侧边栏壁纸
博主头像
AngusWong's博客 博主等级

行动起来,活在当下

  • 累计撰写 25 篇文章
  • 累计创建 26 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Docker:docker镜像与容器的导入和导出

Administrator
2021-02-03 / 0 评论 / 0 点赞 / 5 阅读 / 0 字

[h2title]docker镜像的导入和导出[/h2title]

1、docker镜像的导出

涉及到的命令: docker save [options] images [images...] 我们使用镜像(dockerdemo)来演示镜像的导出:
docker save -o dockerdemo.tar dockerdemo
这里导出的时候指定了导出后文件的路径,如果不指定路径,默认是当前文件夹。 或者也可以使用下面的命令导出:
docker save > dockerdemo.tar dockerdemo
其中-o和>表示输出到文件,dockerdemo.tar为导出的目标文件,dockerdemo为源镜像名。 我们查看本地是否有了导出后的文件: 可以看到目录下面已经有了刚才导出的文件。

2、docker镜像的导入

我们首先使用XFtp把上面导出的镜像文件上传到阿里云服务器 然后进入文件所在的目录 我们查看阿里云服务器上面有哪些镜像: 从上图中看出:现在阿里云服务器上面没有任何的镜像。 涉及到的导入命令load
docker load [options]
接下来我们导入刚才上传的镜像。
docker load -i dockerdemo.tar
或者也可以使用下面的命令
docker load < dockerdemo.tar
其中-i(i即imput)和<表示从文件输入。上面的两个命令都会成功导入镜像以及相关元数据,包括tag信息。 导入后查看镜像: 可以看到有了我们刚才导入的镜像。导入了镜像以后就可以根据镜像运行容器,最后运行应用程序。

[h2title]三、docker容器的导入和导出[/h2title]

接下来我们演示容器的导入和导出。

1、docker容器的导出

涉及到的命令export。
docker export [options]  container
我们把上面生成的容器导出:
docker export -o D:\containers\dockerdemocontainer.tar dockerdemo
如下图所示: 其中,-o表示输出的文件,这里指定了输出的路径,如果没有指定路径,则默认生成到当前文件夹。dockerdemocontainer.tar为目标文件,dockerdemo为源容器名。 我们查看目录下面是否生成了导出的容器:

2、docker容器的导入

我们首先把导出的容器使用XFTP上传到阿里云服务器。 涉及到的导入命令import。
docker import [options] file|URL|- [REPOSITORY[:TAG]]
如下图所示 我们导入刚才上传的容器
docker import dockerdemocontainer.tar dockerdemo:imp
dockerdemocontainer.tar表示要导入的容器,dockerdemo:imp表示导入后的镜像名称,imp表示给导入的镜像打tag。 如下图所示 然后我们查看镜像: 可以看到这时有我们刚才导入的镜像了,导入的镜像tag为imp。

四、总结

下面我们来总结一下镜像和容器导入导出的区别:
  1. 镜像导入是一个复制的过程,容器导入是将当前容器变成一个新的镜像。
  2. docker save命令保存的是镜像(image),docker export命令保存的是容器(container)。
  3. export命令导出的tar文件略小于save命令导出的。
  4. 因为export导出的是容器,export导出的文件在import导入时,无法保留镜像所有的历史(即每一层layer信息),不能进行回滚操作。而save是根据镜像来的,所以导入时可以完整保留下每一层layer信息。如下图所示:dockerdemo:latest是save导出load导入的,dockerdemo:imp是export导出import导入的。
  5. docker load不能对导入的镜像重命名,而docker import导入可以为镜像指定新名称。例如,上面导入的时候指定dockerdeom:imp。
对于是使用镜像导入导出还是使用容器导入导出该如何选择呢?有下面两点建议:
  1. 若是只想备份image,使用save和load。
  2. 若是在启动容器后,容器内容有变化,需要备份,则使用export和import。
0

评论区