docker-数据共享-volume-container-方式

volume container 的方式,就是创建一个容器,不启动,其他容器使用这个容器作为存储:

创建容器

1
docker create --name vc_data -v ~/host_docs:/usr/local/apache2/host_docs -v /opt/tools

注意: 这里执行的是 docker create 命令,这是因为 volume container 的作用只是提供数据,它本身不需要处于运行状态.容器 mount 了两个 volume:

1
2
1. bind mount,存放 web server 的静态文件。
2. docker managed volume,存放一些实用工具(当然现在是空的,这里只是做个示例)。

使用容器

其他容器可以通过 –volumes-from 来使用上面创建的容器:

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

三个容器web1、web2、web3 都使用了vc_data, 通过docker inspect web1, docker inspect web2, docker inspect web3, 可以看到三个容器使用的就是 vc_data 的 volume,而且连 mount point 都是一样的.

volume container 特点

  1. 与 bind mount 相比,不必为每一个容器指定 host path,所有 path 都在 volume container 中定义好了,容器只需与 volume container 关联,实现了容器与 host 的解耦。
  2. 使用 volume container 的容器其 mount point 是一致的,有利于配置的规范和标准化,但也带来一定的局限,使用时需要综合考虑。

转自:docker-数据共享-volume-container-方式