当前位置: 首页 > news >正文

用 volume container 共享数据 - 每天5分钟玩转 Docker 容器技术(42)

volume container 是专门为其他容器提供 volume 的容器。它提供的卷可以是 bind mount,也可以是 docker managed volume。下面我们创建一个 volume container:

我们将容器命名为 vc_data(vc 是 volume container 的缩写)。注意这里执行的是 docker create 命令,这是因为 volume container 的作用只是提供数据,它本身不需要处于运行状态。容器 mount 了两个 volume:

  1. bind mount,存放 web server 的静态文件。

  2. docker managed volume,存放一些实用工具(当然现在是空的,这里只是做个示例)。

通过 docker inspect 可以查看到这两个 volume。

# docker inspect vc_data

......


"Mounts": [

    {

        "Source": "/root/htdocs",

        "Destination": "/usr/local/apache2/htdocs",

        "Mode": "",

        "RW": true,

        "Propagation": "rprivate"

    },

    {

        "Name": "1b603669398d117e499449862636a56c4f4c804d447c680e7b3ba7c7f5e52205",

        "Source": "/var/lib/docker/volumes/1b603669398d117e499449862636a56c4f4c804d447c680e7b3ba7c7f5e52205/_data",

        "Destination": "/other/useful/tools",

        "Driver": "local",

        "Mode": "",

        "RW": true,

        "Propagation": ""

    }

],

......

其他容器可以通过 --volumes-from 使用 vc_data 这个 volume container:

205.png

三个 httpd 容器都使用了 vc_data,看看它们现在都有哪些 volume,以 web1 为例:

# docker inspect web1

......


"Mounts": [

    {

        "Source": "/root/htdocs",

        "Destination": "/usr/local/apache2/htdocs",

        "Mode": "",

        "RW": true,

        "Propagation": "rprivate"

    },

    {

        "Name": "1b603669398d117e499449862636a56c4f4c804d447c680e7b3ba7c7f5e52205",

        "Source": "/var/lib/docker/volumes/1b603669398d117e499449862636a56c4f4c804d447c680e7b3ba7c7f5e52205/_data",

        "Destination": "/other/useful/tools",

        "Driver": "local",

        "Mode": "",

        "RW": true,

        "Propagation": ""

    }

],

......

web1 容器使用的就是 vc_data 的 volume,而且连 mount point 都是一样的。验证一下数据共享的效果:

可见,三个容器已经成功共享了 volume container 中的 volume。

下面我们讨论一下 volume container 的特点:

  1. 与 bind mount 相比,不必为每一个容器指定 host path,所有 path 都在 volume container 中定义好了,容器只需与 volume container 关联,实现了容器与 host 的解耦

  2. 使用 volume container 的容器其 mount point 是一致的,有利于配置的规范和标准化,但也带来一定的局限,使用时需要综合考虑。

另一种在容器之间共享数据的方式是 data-packed volume container,下一节讨论。

二维码+指纹.png

相关文章:

  • uva 10806 Dijkstra, Dijkstra. (最小费最大流)
  • rsync 同步mac机器目录数据到windows2008R2
  • 全景展现智慧银川成就
  • oracle数据库未打开解决的方法
  • 【Unity笔记】物体的Transform操作:速度、旋转、平移
  • Linux rz sz
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 分享一些PHP开发者实用工具(上)
  • 从TensorFlow到PyTorch:九大深度学习框架哪款最适合你?
  • jmeter添加自定义扩展函数之图片base64编码
  • Vue 2.3、2.4 知识点小结
  • 颜色模式
  • 自作聪明的开发
  • 记录一次MySQL进程崩溃,无法重启故障排查
  • 我的IntelliJ IDEA 设置
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • 0x05 Python数据分析,Anaconda八斩刀
  • es6(二):字符串的扩展
  • Fabric架构演变之路
  • httpie使用详解
  • Java|序列化异常StreamCorruptedException的解决方法
  • js写一个简单的选项卡
  • js作用域和this的理解
  • Laravel 中的一个后期静态绑定
  • Making An Indicator With Pure CSS
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • PHP 小技巧
  • ViewService——一种保证客户端与服务端同步的方法
  • 翻译--Thinking in React
  • 计算机常识 - 收藏集 - 掘金
  • 前端知识点整理(待续)
  • 数据科学 第 3 章 11 字符串处理
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • 阿里云ACE认证之理解CDN技术
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (10)STL算法之搜索(二) 二分查找
  • (6)添加vue-cookie
  • (pojstep1.1.2)2654(直叙式模拟)
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转)Unity3DUnity3D在android下调试
  • (转)平衡树
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .Net Redis的秒杀Dome和异步执行
  • .NET 中创建支持集合初始化器的类型
  • .NET使用存储过程实现对数据库的增删改查
  • .net下简单快捷的数值高低位切换
  • @Autowired @Resource @Qualifier的区别