Docker - 容器存储详解2(volume container、data-packed volume container)

作者: hangge 发布时间: 2019-09-09 浏览: 593 次 编辑

三、volume container

1,基本介绍

  • volume container 是专门为其它容器提供 volume 的容器。

  • volume container 提供的卷可以是 bind mount,也可以是 docker managed volume

2,volume container 的优点

    与 bind mount 相比,不必为每一容器指定 host path,所有 path 都在 volume container 中定义好,容器只需要与 volume container 关联,从而实现容器与 host 的解偶。

3,volume container 的创建

(1)下面使用 docker create 命令创建一个名为 vc_data 的 volume container,该容器 mount 了两个 volume(两种类型):

  • 一种是 bind mount,存放 Web Server 的静态文件。

  • 另一种是 docker managed volume,存放一些实用工具(这个只是用于演示,里面没有东西也没关系)

1
2
3
4
docker create --name vc_data \
  -v ~/htdocs:/usr/local/apache2/htdcocs \
  -v /other/uesful/tool \
  busybox


(2)实用 docker inspect vc_data 命令可以看到这两个 volume

原文:Docker - 容器存储详解2(volume container、data-packed volume container)


4,volume container 的使用

(1)volume container 创建好之后,其它容器可以通过 --volumes-from 来使用它。比如下面三个 httpd 容器都使用了 vc_data

1
2
3
docker run --name web1 -d --volumes-from vc_data httpd
docker run --name web2 -d --volumes-from vc_data httpd
docker run --name web3 -d --volumes-from vc_data httpd


(2)我们随便查看一个容器,这里以 web1 为例,执行 docker inspect web1 可以看到该容器使用的就是 vc_data 的 volume

原文:Docker - 容器存储详解2(volume container、data-packed volume container)


四、data-packed volume container

1,基本介绍

(1)前面例子 volume container 的数据归根到底还是在 host 里,如果想要将数据完全放到 volume container 中,同时又能与其它容器共享可以使用 data-packed volume container

(2)data-packed volume container 原理是将数据打包到镜像中,然后通过 docker managed volume 共享。

2,使用场景

由于 data-packed volume container 是自包含的,不依赖 host 提供数据,具有很强的移植性,非常适合只使用静态数据的场景。比如应用的配置信息、Web server 的静态文件等。

3,data-packed volume container 的创建

(1)首先我们创建一个 Dockerfile 文件用于构建镜像,内容如下:

内容说明:

  • 第二行:ADD 将静态文件添加到容器目录 /usr/local/apache2/htdocs

  • 第三行:VOLUME 作用与 -v 等效,用来创建 docker managed volumemount point 为 /usr/local/apache2/htdocs。因为这个目录就是 ADD 添加的目录,所以会将已有数据复制到 volume 中。

1
2
3
FROM busybox:latest
ADD htdocs /usr/local/apache2/htdocs
VOLUME /usr/local/apache2/htdocs


(2)接着 build 这个镜像,命名为 datapacked

1
docker build -t datapacked .


(3)最后用这个镜像创建 data-packed volume container 即可。

1
docker create --name vc_data datapacked


4,data-packed volume container 的创建

data-packed volume container 创建好之后,其它容器同样通过 --volumes-from 来使用它。比如下面三个 httpd 容器都使用了 vc_data

1
2
3
docker run --name web1 -d --volumes-from vc_data httpd
docker run --name web2 -d --volumes-from vc_data httpd
docker run --name web3 -d --volumes-from vc_data httpd


留原文链接:https://www.hangge.com/blog/cache/detail_2404.html