docker打包镜像到本地_如何从虚拟机导出镜像

docker打包镜像到本地_如何从虚拟机导出镜像引言当我们在测试环境(本文特指docker容器)部署好自己得服务得时候,想在生产环境上部署我们得服务,又害怕环境不一样导致服务不能运行,那么这个时候就可以把我们得容器导出为镜像,然后再把镜像导出为压缩包,接下来把压缩包复制到我们的生产环境,然后在生产环境把压缩包导入为镜像,最后使用此镜像开一个容器,然后在容器内打开我们的服务,那么我们的服务就可以正常运行啦!环境简介系统环境:ubuntu18.04如果要在新的服务器使用我们的镜像,那么需要新的服务器和你测试环境的服务器的底层系统一致,即如果你测试环

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

引言

当我们在测试环境(本文特指docker容器)部署好自己得服务得时候,想在生产环境上部署我们得服务,又害怕环境不一样导致服务不能运行,那么这个时候就可以把我们得容器导出为镜像,然后再把镜像导出为压缩包,接下来把压缩包复制到我们的生产环境,然后在生产环境把压缩包导入为镜像,最后使用此镜像开一个容器,然后在容器内打开我们的服务,那么我们的服务就可以正常运行啦!

环境简介

系统环境:ubuntu18.04

如果要在新的服务器使用我们的镜像,那么需要新的服务器和你测试环境的服务器的底层系统一致,即如果你测试环境使用的底层系统是ubuntu18.04,那么你的生产环境也要是ubuntu18.04。

具体步骤

第一步:导出我们的容器为镜像

首先,查看正在运行的容器,使用以下命令:

# 查看正在运行中的容器
docker ps
# 查看所有的容器,包括没在运行中的容器
docker ps -a

比如我的容器:
在这里插入图片描述
可以看到,我有两个容器正在运行中,接下来我们使用以下命令把某个容器导出为镜像:

# 导出容器为镜像
docker commit ef5db5c6693b skj:latest

其中,ef5db5c6693b为容器的ID,或者换成容器的名称也可以,skj为我们导出的镜像名称,冒号后面的latest是我们导出的镜像的版本,表示最新版本,也可以给他其它的版本号比如18.04,导出后使用以下命令查看是否导出成功,如果有名为skj的镜像,说明导出成功,这里不做演示:

docker images

第二步:导出镜像为压缩包

使用以下命令,将我们刚才导出的镜像skj导出为.tar形式的压缩包,当然.zip也是可以的:

sudo docker save -o /home/skj.tar skj:latest

以上命令将我们的镜像 skj:latest 导出到/home/目录下,并保存为skj.tar的压缩包。

第三步:复制压缩包到新的服务器

这一步就自行操作啦,用sftp将文件上传到新的服务器指定目录下即可,这里假设我们上传到新的服务器的/home/目录下,然后我们开始进行下一步操作。

第四步:将skj.tar导入为镜像

假设你在新的服务器上已经安装好了docker,那么使用以下命令将我们刚才上传的压缩包导入为镜像:

# 导入方法一
docker load --input /home/skj.tar
# 导入方法二
$ docker load -i /home/skj.tar
# 导入方法三
$ docker load < /home/skj.tar

这样我们就把skj.tar压缩包导入为镜像了,导入之后,使用以下命令查看是否导入成功:

# 查看所有镜像
docker images

在镜像列表中,如果有名为skj,版本为latest的镜像,那么说明我们的镜像已经导入成功了。

第五步:使用我们新导入的镜像

最简单的方法是:

# 使用skj:latest镜像创建并启动一个容器,并以shell的交互模式进入容器内,使用exit退出容器后容器停止运行
docker run -it skj:latest
# 使用skj:latest镜像创建并启动一个容器,但是不进入容器内部,而是在后台运行
docker run -itd skj:latest

然后使用以下命令查看我们新创建的容器:

# 查看新建的容器
docker ps

结语

本文讲解了如何从一台服务器上将我们的容器导出为镜像,然后再将导出的镜像导出为指定目录下的压缩包,然后将压缩包上传到新的服务器,接下来将压缩包导入为新的服务器上的docker镜像,最后使用此镜像创建我们的容器,整个过程思路清晰,容易理解,且每一步基本都有语法解释,详细周到。

参考文章:

CSDN:

  • https://blog.csdn.net/weixin_40816738/article/details/90280644

博客园:

  • https://www.cnblogs.com/gcgc/p/10496059.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/196736.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • linux添加ll命令,CENTOS: Docker的容器系统加上ll命令

    linux添加ll命令,CENTOS: Docker的容器系统加上ll命令Docker的很多Image都少量一些我们平时用的命令,ll就是其中一个。其实ll是一个alias来的。只要修改~/.bashrc就可以。运行以下命令nano~/.bashrc内容大概如下:#~/.bashrc:executedbybash(1)fornon-loginshells.#Note:PS1andumaskarealreadysetin/etc/pro…

  • docker部署jenkins安装使用教程_docker封装python程序

    docker部署jenkins安装使用教程_docker封装python程序前言使用docker安装jenkins环境,jenkins构建的workspace目录默认是在容器里面构建的,如果我们想执行python3的代码,需进容器内部安装python3的环境。进jenki

  • centos7卸载软件命令_linux安装docker

    centos7卸载软件命令_linux安装docker1首先搜索已经安装的docker安装包[root@localhost~]#yumlistinstalled|grepdocker或者使用该命令[root@localhost~]#rpm-qa|grepdockerdocker.x86_642:1.12.6-16.el7.centos@extras

  • mac下docker从容器内部访问宿主机ip[通俗易懂]

    mac下docker从容器内部访问宿主机ip[通俗易懂]有两种情况:1、有网络的情况下:通过ifconfig中找到自己的电脑ip然后直接访问即可2、没有网络的情况下:通过ifconfig是找不到ip的,然后需要找到一个宿主机的ip可以通过域名来访问:docker.for.mac.host.internal可以ping或者用telnetipport来测试一下…

  • docker启动mysql失败(闪退)原因

    docker启动mysql失败(闪退)原因创建好mysql之后容器之后可以连接后来修改了配置发现mysql启动不了dockerps-a查看发现mysql的状态一直是EXISTdockerstartmysql能成功启动(docker返回mysql)但是再查看dockerps发现还是没有启动起来大概可以知道就是docker启动之后又迅速关闭想起Docker容器后台运行,就必须有一个前台进程。否则就会自动关闭,大概推测是docker里的mysql没又起起来。想起刚刚修改了配置,可能是配置错了导致的。一看发现粘贴配置的时候格

  • 记录一次docker启动容器后Exited(127)的解决过程[通俗易懂]

    特意强调一下:本人使用的系统为centos6.8本人运行容器的状态为Exited(127),如果你的问题不是127,可能解决不了你的问题问题:安装docker之后,拉取镜像dockerpullredis然后dockerimages查看所有镜像后,开始命令运行redisdockerrun-d–name=myredis-p6379:6379-d7caaqwe22q(镜像id)然后dockerps-a发现:CONTAINERIDIMAGE

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号