0

0

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

WBOY

WBOY

发布时间:2022-03-08 10:47:55

|

6927人浏览过

|

来源于php中文网

原创

在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

SPLASH
SPLASH

将音乐制作的乐趣带给每个人。

下载
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视频教程

相关专题

更多
asp开发工具有哪些
asp开发工具有哪些

asp开发工具有Visual Studio、Dreamweaver、FrontPage、EditPlus、UltraEdit、SQL Server Management Studio、RAD Studio、Delphi、Asp.NET和Oracle SQL Developer。更多asp开发工具相关内容,详情请阅读本专题下面的其他文章,php中文网欢迎大家前来学习。

347

2023.10.23

k8s和docker区别
k8s和docker区别

k8s和docker区别有抽象层次不同、管理范围不同、功能不同、应用程序生命周期管理不同、缩放能力不同、高可用性等等区别。本专题为大家提供k8s和docker区别相关的各种文章、以及下载和课程。

249

2023.07.24

docker进入容器的方法有哪些
docker进入容器的方法有哪些

docker进入容器的方法:1. Docker exec;2. Docker attach;3. Docker run --interactive --tty;4. Docker ps -a;5. 使用 Docker Compose。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

490

2024.04.08

docker容器无法访问外部网络怎么办
docker容器无法访问外部网络怎么办

docker 容器无法访问外部网络的原因和解决方法:配置 nat 端口映射以将容器端口映射到主机端口。根据主机兼容性选择正确的网络驱动(如 host 或 overlay)。允许容器端口通过主机的防火墙。配置容器的正确 dns 服务器。选择正确的容器网络模式。排除主机网络问题,如防火墙或连接问题。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

393

2024.04.08

docker镜像有什么用
docker镜像有什么用

docker 镜像是预构建的软件组件,用途广泛,包括:应用程序部署:简化部署,提高移植性。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

432

2024.04.08

轻量应用服务器和云服务器的区别
轻量应用服务器和云服务器的区别

随着科技的快速发展,越来越多的企业和个人开始依赖于服务器来托管其应用程序和网站。然而,在选择服务器时,很多人对轻量应用服务器和云服务器之间的差异不够了解。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

103

2023.07.27

注册云服务器的作用
注册云服务器的作用

注册云服务器的作用:1、可放置公司网站、电子商务平台、APP和其他应用程序等;2、使用云服务器来存储和共享数据,不仅高度安全,而且可以随时随地在线访问;3、当内存不够时,站长可自行增加,使资源充沛,保障了页面加载速度和优质的用户体验。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

223

2024.03.13

云服务器的全部用途
云服务器的全部用途

云服务器的用途广泛,包括网站托管、应用程序部署、数据存储和备份、虚拟化和容器化、大数据处理、游戏服务器以及开发测试环境等。想了解更多云服务器的相关内容,可以阅读本专题下面的文章。

449

2024.03.21

虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

25

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
光速学会docker容器
光速学会docker容器

共33课时 | 1.8万人学习

Docker 17 中文开发手册
Docker 17 中文开发手册

共0课时 | 0人学习

极客学院Docker视频教程
极客学院Docker视频教程

共33课时 | 17.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

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