阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

在Docker容器之间拷贝数据:原理与操作示例

415次阅读
没有评论

共计 2795 个字符,预计需要花费 7 分钟才能阅读完成。

Docker 容器可以类比成一个目录,它可以将一个应用程序运行时所依赖的所有环境(注:此应用依赖的其他的服务或程序等)打包在一起运行;同时可 以随意的对它进行“启动”、“停止”、“移动”或者“删除”等操作。Docker 容器在 Linux 的命名空间(Namespace)机制下被激活,这样就 可以使得运行在同一服务器上的不同 Docker 容器能在网络(Networking)与存储(storage)层面上被“隔离”(isolation)的 运行。每个 Docker 容器都是在一个 Docker 镜像(image)的基础上创建而来;而一个 Docker 镜像可以支持创建、运行多个 Docker 容 器,这主要取决于服务器的硬件性能。所以,Docker 容器是 Docker 运行时的表现形式。

什么是 Docker 镜像?

Docker 容器是基于一个 Docker 镜像创建的,而 Docker 镜像本身则可以通过 Docker 命令行工具或者 Dockerfiles 来生成。Docker 镜像既可以包含操作系统基础设施(fundamentals)也可以包含一个预先搭建好的可以直接启动的应用程序栈。Docker 镜像可以被看做是一个只读的模 板,这个模板中包含了很多“层”;而任何基于这个 Docker 镜像的新增操作或者更新操作都会导致一个基于当前层的新的层被创建出来,这个新创建的层是直接叠加在当前层之上的而非覆盖整个 Docker 镜像(注:创建新层的过程就是创建新容器的过程)。这就是一个新的 Docker 容器是怎么被创建出来的。

从一个容器拷贝数据到另一个容器:

在容器之间拷贝数据是 Docker 一个重要而且基本的功能。拷贝数据到其他容器的功能可以在真实场景中,如当服务器遇到不可预见的“灾难”(注:断电,宕机)时,起到备份数据的作用。

使用容器的数据卷:

数据卷(data volume,注:位置在 /var/lib/docker/volumes)是容器可以访问,但是位置不在 root 文件系统中的一个目录。为了能让容器之间可以共享数据,Docker 让“卷”(volume)可以绕过 Docker 镜像的层叠机制。容器中所有对镜像的改变全部都直接存储。每个容器都有固定的运行目录在 /var/lib/docker 目录下;而每个容器卷的数据则默认单独存储在 /var/lib/docker/volumes/ 目录底下。docker run 命令的 - v 选项能够实现容器间数据卷中数据的互相拷贝。

操作示例

在这个例子中,我们假设基于镜像 mymod/dvc:v1 创建并运行了两个容器:dvc1 与 dvc2,以下是启动这两个镜像的命令:

  1. docker run –d –name dvc1 mymod/dvc:v1 
  2.  
  3. docker run –d –name dvc2 mymod/dvc:v1

以下命令将创建并启动一个新的容器(也是基于 mymod/dvc: v1 镜像)但是挂载 dvc1 的数据卷,并使用 cp 命令拷贝容器 dvc1 中的数据到宿主机(host)上。

  1. [root@host ~]# docker run –rm –v /var/tmp:/host:rw \ –volumes- from dvc1 cp –r/var/www/html/host/dvc1_files 
  2.  
  3. [注:经过测试以上命令应该改为以下形式才能运行] 
  4.  
  5. [root@host ~]# docker run –rm –v /var/tmp:/host:rw –volumes-from dvc1 mymod/dvc: v1 cp –r /var/www/html/host/dvc1_files 

新建的容器以读 - 写权限挂载宿主机的 /var/temp 目录为 /host 目录,然后挂载所有 dvc1 的数据卷,包含 dvc1 中的 /var/www/html 目录,然后拷贝 /var/www/html 的文件目录到 /host/dvc1_files 下,対映宿主机 /var/temp 目录。

现在我们用以下命令拷贝 dvc1 容器的数据到其他的容器中:

  1. [root@host ~]# docker run –rm –v /var/tmp:/host:ro –volumes-from dvc2 \ cp –a –T /host/dvc1_files /var/www/html 

新建的容器将宿主机的 /var/tmp 目录以只读的形式映射到 dvc2 容器的 /host 目录中,同时加载 dvc2 容器的所有数据卷,然后将 /host /dvc1_files(对应宿主机 /var/tmp/dvc1_files)目录的结构拷贝到 dvc2 容器的 /var/www/html 目录下。

同样的目标可以在 Dockerfile 中使用 ADD 命令实现。ADD 有两个参数一个是源容器一个是目的容器。ADD 命令可以实现从源容器拷贝文件或者数据到目的容器的目标,而不用管各个容器的文件系统差异。

结论

Docker 肯定会提供更好的方式来“培养”容器化服务部署,以支持更广泛的部署平台;同时开发社区也期望 Docker 构建服务层级(service layer)。而 Docker 的做法是:开发容器核心容量,开发跨容器服务管理与通信功能。我们在这篇文章中所阐述的是数据可以在容器间被复制与冗余,这可以用来应付各种数据的损毁与恢复。Docker 还提供了使用方便的容器间差异分析功能,这可以让容器更好的支持排错(debugging)、快速共享部 署环境以达到快速的部署的目标。Docker 可以将容器部署环境从开发或者 QA 阶段直接提交到 AWS 部署环境。用户可以通过 Docker 的数据卷在容器间共享数据;可以将宿主机的目录直接挂载到容器中或者甚至可以从容器中导出数据存档,所以,Docker 非常方便。

Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

在 Docker 中使用 MySQL http://www.linuxidc.com/Linux/2014-01/95354.htm

在 Ubuntu Trusty 14.04 (LTS) (64-bit) 安装 Docker http://www.linuxidc.com/Linux/2014-10/108184.htm

Docker 安装应用 (CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 14.04 安装 Docker  http://www.linuxidc.com/linux/2014-08/105656.htm

阿里云 CentOS 6.5 模板上安装 Docker http://www.linuxidc.com/Linux/2014-11/109107.htm

Docker 的详细介绍 :请点这里
Docker 的下载地址 :请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计2795字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7984452
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流!

CSDN,你是老太太喝粥——无齿下流! 大家好,我是星哥,今天才思枯竭,不写技术文章了!来吐槽一下 CSDN。...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你

你的云服务器到底有多强?宝塔跑分告诉你 为什么要用宝塔跑分? 宝塔跑分其实就是对 CPU、内存、磁盘、IO 做...
告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

告别Notion焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁”

  告别 Notion 焦虑!这款全平台开源加密笔记神器,让你的隐私真正“上锁” 引言 在数字笔记工...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face免费服务器+Docker 快速部署HertzBeat 监控平台

零成本上线!用 Hugging Face 免费服务器 +Docker 快速部署 HertzBeat 监控平台 ...