docker容器跨服务器的迁移

docker的备份方式有export和save两种。

export是当前的状态,针对的是容器,docker save 是针对镜像images。

export

找出要备份容器的ID

[[email protected] ~]$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   NAMES
037b847bf093        centos              "/bin/bash"         3 minutes ago       Exited (0) 2 minute      naughty_davinci     

备份

[[email protected] ~]$ docker export 037b847bf093 >centos_demo.tar
[[email protected] ~]$ du -sh centos_demo.tar
195M    centos_demo.tar

export是把容器打成一个tar包。

恢复

把刚才备份的centos_demo.tar打包到目标服务器

[[email protected] ~]$ cat centos_demo.tar |docker import - centos:demo
8962416d1362f289ceb9848e21a95f03dc34eb6f234c8f98f1a6e1ec7fe34a67

查看新生成的镜像

[[email protected] ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              demo                8962416d1362        24 seconds ago      196.7 MB

save

得到镜像名称

[[email protected] ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
centos              latest              d83a55af4e75        3 weeks ago         196.7 MB

备份镜像

[[email protected] ~]$ docker save centos >centos_save.tar

恢复镜像

[[email protected] ~]$ docker load <centos_save.tar 

查看恢复的镜像

[[email protected] ~]$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED
centos              latest              d83a55af4e75        3 weeks ago         196.7 MB

两者的区别:

导出后再导入(exported-imported)的镜像会丢失所有的历史,而保存后再加载(saveed-loaded)的镜像没有丢失历史和层 (layer)。这意味着使用导出后再导入的方式,你将无法回滚到之前的层(layer),同时,使用保存后再加载的方式持久化整个镜像,就可以做到层回 滚(可以执行docker tag <LAYER ID> <IMAGE NAME>来回滚之前的层)。

时间: 2024-08-08 09:34:54

docker容器跨服务器的迁移的相关文章

docker容器跨服务器的迁移方式export和save

前沿: 这两天把报警平台放在了docker里面跑了,但是宿主机本身性能就不好,所以导致mongodb到挂了好几次了.这次搞了一台牛逼的服务器,虽说是opentstack里面的主机,但是iops 很不错. 感谢向军同学的帮助,不然就升级uek内核就能搞死我. 你的程序放在docker里面迁移起来很是方便,像是以前的话,需要重新部署环境和静态文件. 放在docker里面的话,只是需要export备份封装后,scp.rsync迁移到别的服务器就可以了. 我这边的redis和mongodb分在不同的容器

docker容器跨服务器的迁移方式export和save(转)

前沿: 这两天把报警平台放在了docker里面跑了,但是宿主机本身性能就不好,所以导致mongodb到挂了好几次了.这次搞了一台牛逼的服务器,虽说是opentstack里面的主机,但是iops 很不错. 感谢向军同学的帮助,不然就升级uek内核就能搞死我. 你的程序放在docker里面迁移起来很是方便,像是以前的话,需要重新部署环境和静态文件. 放在docker里面的话,只是需要export备份封装后,scp.rsync迁移到别的服务器就可以了. 我这边的redis和mongodb分在不同的容器

docker容器跨服务器的迁移的方法

docker的备份方式有export和save两种. export是当前的状态,针对的是容器,docker save 是针对镜像images. export 找出要备份容器的ID ? 1 2 3 [[email protected] ~]$ docker ps -a CONTAINER ID    IMAGE        COMMAND       CREATED       STATUS          NAMES 037b847bf093    centos       "/bin/ba

Docker容器跨主机多网段通信解决方案

实现Docker的跨主机网络通信的方案有很多,比如在之前博文中写到的通过部署consul服务实现Docker容器跨主机通信 ,但是consul服务并不能实现多个网段跨主机进行通信,在这种情况之下,MacVlan的概念就应用而生了. Macvlan工作原理: Macvlan是Linux内核支持的网络接口.要求的Linux内部版本是v3.9–3.19和4.0+: 通过为物理网卡创建Macvlan子接口,允许一块物理网卡拥有多个独立的MAC地址和IP地址.虚拟出来的子接口将直接暴露在相邻物理网络中.从

OpenvSwitch实现Docker容器跨宿主机互联

1. OpenvSwitch简介 Open vSwitch(下面简称为 OVS)是由 Nicira Networks 主导的,运行在虚拟化平台(例如 KVM,Xen)上的虚拟交换机.在虚拟化平台上,OVS可以为动态变化的端点提供 2 层交换功能,很好的控制虚拟网络中的访问策略.网络隔离.流量监控等等.主要实现代码为可移植的C代码. 它的目的是让大规模网络自动化可以通过编程扩展,同时仍然支持标准的管理接口和协议(例如NetFlow,sFlow,SPAN,RSPAN,CLI,LACP,802.1ag

Docker容器跨主机通信之:直接路由方式

概述 就目前Docker自身默认的网络来说,单台主机上的不同Docker容器可以借助docker0网桥直接通信,这没毛病,而不同主机上的Docker容器之间只能通过在主机上用映射端口的方法来进行通信,有时这种方式会很不方便,甚至达不到我们的要求,因此位于不同物理机上的Docker容器之间直接使用本身的IP地址进行通信很有必要.再者说,如果将Docker容器起在不同的物理主机上,我们不可避免的会遭遇到Docker容器的跨主机通信问题.本文就来尝试一下. 方案原理分析 由于使用容器的IP进行路由,就

Docker容器跨主机通信之:OVS+GRE

一.概述 由于docker自身还未支持跨主机容器通信,需要借助docker网络开源解决方案 OVS OpenVSwich即开放式虚拟交换机实现,简称OVS,OVS在云计算领域应用广泛,值得我们去学习使用. OpenVSwich OpenVSwich是一种开源软件,通过软件的方式实现二层交换机功能,专门管理多租赁云计算网络环境,提供虚拟网络中的访问策略.网络隔离.流量监控等. 既然是虚拟交换机,自然与传统的物理交换机有着相同的特性,操作中可以按照理解物理交换机的方式去操作,有助于对虚拟交换机的认识

使用weave实现跨主机docker容器互联

关于weave的原理不做细致的说明,如果想了解weave可以登陆官网:https://www.weave.works/ In this post,使用阿里云3台ECS服务器进行weave搭建,并测试搭建weave后,跨主机docker容器的连通性. 场景:10.162.204.252 node110.171.31.181 node210.171.19.139 node3 一.在所有需要跨主机互通的docker宿主机安装weave.1.在node1上安装weave,并启动weave.wget -O

利用虚拟网桥实现Docker容器的跨主机访问

最近在研究Docker,Docker的网络配置是比较令人头疼的部分,尤其是跨主机的容器间通信,很多解决方案都比较复杂,这里,我只用虚拟网桥来实现Docker的跨主机访问,分享出来,希望对Docker学习的各位有一定的启发. 基本思想: 由于Docker容器通过docker0 网桥实现同一主机间中,容器的ip地址分配和访问,所以,如果希望Docker跨主机访问,最简单的方式就是将不同主机的docker0 设置为同一网段. 那么怎么实现跨主机呢?我这里将本机网卡也通过网桥来连接,那么,整体网络拓扑结