文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Docker镜像与容器的导入导出操作实践

2024-04-02 19:55

关注

一、前言

随着容器技术的发展,现在很多的应用程序系统都会选择使用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

docker load [options]

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

docker load -i dockerdemo.tar

如下图所示:

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

docker load < dockerdemo.tar

其中-i(i即imput)和<表示从文件输入。上面的两个命令都会成功导入镜像以及相关元数据,包括tag信息。

导入后查看镜像:

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

三、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 [options] file|URL|- [REPOSITORY[:TAG]]

dockerdemocontainer.tar表示要导入的容器,dockerdemo:imp表示导入后的镜像名称,imp表示给导入的镜像打tag。

如下图所示

然后我们查看镜像:

可以看到这时有我们刚才导入的镜像了,导入的镜像tag为imp。

四、总结

下面我们来总结一下镜像和容器导入导出的区别:

对于是使用镜像导入导出还是使用容器导入导出该如何选择呢?有下面两点建议:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯