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

简介: volume container 是专门为其他容器提供 volume 的容器。它提供的卷可以是 bind mount,也可以是 docker managed volume。下面我们创建一个 volume container:我们将容器命名为 vc_data(vc 是 volume container 的缩写)。

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

目录
相关文章
|
Java API 容器
java的图形化界面编程AWT与Swing学习记录与分享(其一container容器)
java的图形化界面编程AWT与Swing学习记录与分享(其一container容器)
298 0
|
域名解析 网络协议 API
【Azure Container App】配置容器应用的缩放规则 Managed Identity 连接中国区 Azure Service Bus 问题
本文介绍了在 Azure Container Apps 中配置基于自定义 Azure Service Bus 的自动缩放规则时,因未指定云环境导致的域名解析错误问题。解决方案是在扩展规则中添加 `cloud=AzureChinaCloud` 参数,以适配中国区 Azure 环境。内容涵盖问题描述、原因分析、解决方法及配置示例,适用于使用 KEDA 实现事件驱动自动缩放的场景。
253 1
|
安全 容灾 Serverless
云上应用管理问题之为什么很多业务会采用包年包月 + 按量付费的混合付费方式
云上应用管理问题之为什么很多业务会采用包年包月 + 按量付费的混合付费方式
|
消息中间件 Kubernetes 数据库
在k8S中,初始化容器(init container)概念原理是什么?
在k8S中,初始化容器(init container)概念原理是什么?
|
运维 IDE Serverless
Serverless 应用引擎产品使用之阿里函数计算中,阿里云容器镜像服务(Container Registry)中创建自定义镜像,然后将其部署到FC上如何解决
阿里云Serverless 应用引擎(SAE)提供了完整的微服务应用生命周期管理能力,包括应用部署、服务治理、开发运维、资源管理等功能,并通过扩展功能支持多环境管理、API Gateway、事件驱动等高级应用场景,帮助企业快速构建、部署、运维和扩展微服务架构,实现Serverless化的应用部署与运维模式。以下是对SAE产品使用合集的概述,包括应用管理、服务治理、开发运维、资源管理等方面。
385 0
|
JavaScript 容器
vue element plus Container 布局容器
vue element plus Container 布局容器
711 0
|
Ubuntu Unix Linux
Docker 镜像(image)& 容器(container)
什么是 Docker 镜像(image)? 镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象; 镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包; 镜像可以运行一个或多个容器,同时镜像也可以停止某个容器的运行,并从中创建新的镜像;【镜像(iamge)的分类】...
1541 1
Docker 镜像(image)& 容器(container)
|
网络协议 应用服务中间件 nginx
一文详解Docker容器(Container)
一文详解Docker容器(Container)
|
Docker 容器
Docker:查看container容器的 ip 地址
Docker:查看container容器的 ip 地址
1369 0