Docker备份、恢复、迁移数据卷 · Docker:从入门到实践

标签: | 发表时间:2020-04-27 12:01 | 作者:
出处:https://bingohuang.gitbooks.io
TreeviewCopyright © yeasy all right reserved, powered by aleen42

利用数据卷容器来备份、恢复、迁移数据卷

可以利用数据卷对其中的数据进行进行备份、恢复和迁移。

备份

首先使用 --volumes-from标记来创建一个加载 dbdata 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录。命令如下:

    $ sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

容器启动后,使用了 tar命令来将 dbdata 卷备份为容器中 /backup/backup.tar 文件,也就是主机当前目录下的名为 backup.tar的文件。

恢复

如果要恢复数据到一个容器,首先创建一个带有空数据卷的容器 dbdata2。

    $ sudo docker run -v /dbdata --name dbdata2 ubuntu /bin/bash

然后创建另一个容器,挂载 dbdata2 容器卷中的数据卷,并使用 untar解压备份文件到挂载的容器卷中。

    $ sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf
/backup/backup.tar

为了查看/验证恢复的数据,可以再启动一个容器挂载同样的容器卷来查看

    $ sudo docker run --volumes-from dbdata2 busybox /bin/ls /dbdata
     
  

Image

镜像的迁移,适用于离线环境。

一般离线环境,都会自建Docker Registry。 无论 官方的,还是最近流行的 Harbor,都是不错的选择。 但是,这个世界上就是有些环境,或者说一些环境在某些时期,没有外网,也没有内部的Registry。 这个时候要部署Docker的服务,怎么办?

只能通过镜像的迁移。 实际上, Harbor的offline installer,就是采用这种形式。

Save

   # use stdout
docker save alpine > /tmp/alpine.tar
# or write to a file directly
docker save alpine -o /tmp/alpine.tar

推荐使用 -o的形式,因为利用stdout的做法虽然直观,但在某些场景下无效,比如利用 ssh远程执行命令。

Load

   # use stdout
docker load < /tmp/wekan.tar
# or read from a file directly
docker load -i /tmp/wekan.tar

Container

容器的迁移,适用于已经上线,且状态复杂、从零开始启动不能正常工作的服务。 容器迁移的包,包含了镜像。

Export

先准备一个正在运行的服务,并且弄脏环境。

   $ docker run --rm -d --name test alpine tail -f /dev/null
9232f0c1dafe0f29918f281ca37bb41914677e818cb6f252abf3dab3be04fbb2
$ docker exec test touch proof
$ docker exec test ls -hl proof
-rw-r--r--    1 root     root           0 Nov 20 14:33 proof

执行导出操作:

   docker export test -o test.tar

Import

首先,关闭刚才运行的服务。

   $ docker kill test
test

执行导入操作:

   $ docker import test.tar test-img
sha256:e03727eeba7e16dd3acfcc7536f1244762508f9b6b9856e49cc837c1b7ffa444

要注意的是, import后得到的是一个镜像,相当于是执行了 docker commit后的内容。 当然, docker commit不是一个推荐的操作,所以容器的导入、导出,就显得不是那么的顺眼。

最后,检查之前创建的文件。

   $ docker run --rm -d --name test test-img tail -f /dev/null
ee29cb63bb2d3ed8ac890789ba80c4fe4078b9d5343a8952b6217d64b4dcbe23
$ docker exec test ls -hl proof
-rw-r--r--    1 root     root           0 Nov 20 14:33 proof

可以看到,前面创建的文件是存在的,并且时间戳完全一致。

相关 [docker 备份 数据] 推荐:

Docker备份、恢复、迁移数据卷 · Docker:从入门到实践

- -
利用数据卷容器来备份、恢复、迁移数据卷. 利用数据卷容器来备份、恢复、迁移数据卷. 可以利用数据卷对其中的数据进行进行备份、恢复和迁移. --volumes-from标记来创建一个加载 dbdata 容器卷的容器,并从主机挂载当前目录到容器的 /backup 目录. tar命令来将 dbdata 卷备份为容器中 /backup/backup.tar 文件,也就是主机当前目录下的名为.

Docker & Flatpak

- - IT瘾-dev
目前最流行的技术莫过于Docker,Docker和Docker衍生的东西用到了很多很酷的技术,目前deepin应用软件发布转变成flatpak,这些看似风牛马不相及的技术方案,实际都使用了一个共同的底层技术——Namespace,假如没有namespace支持,这些技术实现都将成为空中楼阁. 一句话总结,无论是Docker、sysmted-nspawn还是flatpak,都是在namespace基础上,针对不同的场景,生出的不同的解决方案.

Docker Volume 数据持久化方式 - 简书

- -
Docker的数据持久化主要有两种方式:. Docker的数据持久化即使数据不随着container的结束而结束,数据存在于host机器上——要么存在于host的某个指定目录中(使用bind mount),要么使用docker自己管理的volume(/var/lib/docker/volumes下).

Docker 命令查看并清理数据卷及磁盘

- - 小决的专栏
Docker 在长时间使用的情况下,经常需要删除旧的容器并创建新的容器,长此以往,Docker 的数据卷 volumes 会产生了非常多的僵尸文件. 以下介绍如何查看并清理这些僵尸文件. 在 Docker 1.9 以上的版本中,官方提供用于查询僵尸文件的命令:. Docker 1.13 引入了类似于 Linux 上 df 的命令,用于查看 Docker 的磁盘使用情况.

经验复盘-使用docker方式搭建mock数据平台

- - 掘金 架构
「Offer 驾到,掘友接招. 我正在参与2022春招系列活动-经验复盘,点击查看  征文活动详情. 我们在进行前端开发时需要后端提供相应接口,这样我们需要等后端开发完毕后才能进行开发. 这样的话大大影响我们的开发进度,一般情况下我们只需要让后端提供接口文档即可. 但是如果想测试交互的话就需要自己mock数据了.

Oracle数据库备份

- - Oracle - 数据库 - ITeye博客
(一)、导出/导入(EXPORT/IMPORT).   EXPORT/IMPORT是用来将ORACLE中数据移出/移入数据库.   1、EXPORT将数据库中数据备份成一个二进制系统文件称为“导出转储文件”(EXPORT. DUMP FILE),并将重新生成数据库写入文件中.   a.用户模式:导出用户所有对象以及对象中的数据;.

Elasticsearch 数据备份、迁移

- - 枯惠
在时候我们面临将Elasticsearch的数据进行迁移亦或是数据备份的场景,此时我们可以使用 elasticsearch-dump这个工具来实现:. mappings从production环境复制到staging环境. 数据从production环境复制到staging. template数据导出导入.

docker初体验之docker-tomcat

- - BlogJava-首页技术区
docker已经是现在最热的容器技术,最近也去体验了一下,在daocloud注册了一个账号,并开始本机实战docker. daocloud免费有两个容器可用,体验送T恤,邀请送书,这里我分享一个daocloud的邀请码 https://account.daocloud.io/signup?invite_code=mxeq2jkmcur37vz6ven8,daocloud是非常棒的容器云平台,使用体验好,问题响应也及时,绑定微信还送一个额外容器.

kubernetes移除Docker?

- -
两周前,Kubernetes在其最新的Changelog中宣布1.20之后将要弃用dockershime,也就说Kubernetes将不再使用Docker做为其容器运行时. 这一消息持续发酵,掀起了不小的波澜,毕竟Kubernetes+Docker的经典组合是被市场所认可的,大量企业都在使用. 看上去这个“弃用”的决定有点无厘头,那么为什么Kubernetes会做出这样的决定.

在CentOS实现mysql数据库的自动备份备份

- - CSDN博客系统运维推荐文章
        数据是一个比较重要的数据,经常需要备份,每次都手动比较麻烦. 本脚本主要现实在CentOS中实现对数据库的备份和保留最近十五天的备份文件. 避免太多无用陈旧的备份占用空间. #!/bin/bash id="root" #用户名 pwd="123123" #密码 dbs="conedu commlib" #数据库名字的列表,多个数据库用空格分开.