首页 > 运维 > Docker > 正文

docker镜像导入和导出是什么意思

WBOY
发布: 2022-03-08 10:47:55
原创
6927人浏览过
在docker中,镜像导入是利用“load [options]”命令,将当前镜像复制出一个新的镜像;镜像导出是利用“save [options]  images”命令,保存包含历史在内的镜像所有的信息。

docker镜像导入和导出是什么意思

本教程操作环境:linux7.3系统、docker-1.13.1版、Dell G3电脑。

docker镜像导入和导出是什么意思

随着容器技术的发展,现在很多的应用程序系统都会选择使用docker容器进行部署,但是有时候使用docker容器进行部署的时候会遇到问题,比如说我们的应用程序里面需要依赖其他第三方的镜像,如果这时候服务器是在内网不能连接外网的情况下,那么就无法部署了。基于这种情况,docker官方支持docker镜像和容器的导入和导出,我们可以在一台能够联网的机器上面编译镜像,然后导出镜像或者容器,最后把导出的镜像或者容器上传到内网服务器,然后在导入镜像或者容器,这样就可以了。

镜像和容器的导入、导出操作主要涉及到下面的几个命令:save、load、export、import。

演示过程中我们是在本地生成镜像或者容器,然后把镜像或者容器导出,最后上传到阿里云服务器演示导入功能。

我们使用VS 2019创建一个ASP.NET Core MVC的项目,添加Dockerfile文件:

# 使用运行时镜像
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim
# 设置工作目录
WORKDIR /app
# 把目录下的内容都复制到当前目录下
COPY . .
# 暴露80端口
EXPOSE 80
# 运行镜像入口命令和可执行文件名称
ENTRYPOINT ["dotnet", "DockerDemo.dll"]
登录后复制

然后发布项目。我们查看现有的docker镜像

可以看到:现在只有两个.net core的镜像。我们生成镜像:

 docker build -t dockerdemo .
登录后复制

如下图所示:

查看生成后的镜像

然后我们根据生成的镜像来运行容器,首先查看现有的容器:

可以看到这时没有任何容器。我们运行容器:

可以看到:容器已经运行成功了。 

二、docker镜像的导入和导出

1、docker镜像的导出

涉及到的命令:

docker save [options]  images [images...]
登录后复制

我们使用上面的镜像来演示镜像的导出:

docker save -o dockerdemo.tar  dockerdemo
登录后复制

如下图所示:

这里导出的时候指定了导出后文件的路径,如果不指定路径,默认是当前文件夹。 

或者也可以使用下面的命令导出:

docker save > dockerdemo.tar dockerdemo
登录后复制

其中-o和>表示输出到文件,dockerdemo.tar为导出的目标文件,dockerdemo为源镜像名。

我们查看本地是否有了导出后的文件:

可以看到目录下面已经有了刚才导出的文件。 

2、docker镜像的导入

我们首先使用XFtp把上面导出的镜像文件上传到阿里云服务器

然后进入文件所在的目录 

我们查看阿里云服务器上面有哪些镜像:

从上图中看出:现在阿里云服务器上面没有任何的镜像。

涉及到的导入命令load

Find JSON Path Online
Find JSON Path Online

Easily find JSON paths within JSON objects using our intuitive Json Path Finder

Find JSON Path Online 193
查看详情 Find JSON Path Online
docker load [options]
登录后复制

接下来我们导入刚才上传的镜像。

docker load -i dockerdemo.tar
登录后复制

如下图所示:

或者也可以使用下面的命令

docker load < dockerdemo.tar
登录后复制

其中-i(i即imput)和

导入后查看镜像:

可以看到有了我们刚才导入的镜像。导入了镜像以后就可以根据镜像运行容器,最后运行应用程序。

三、docker容器的导入和导出

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

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。 

推荐学习:《docker视频教程

以上就是docker镜像导入和导出是什么意思的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号