绑定卷
下面的命令将启动一个Apache HTTP 服务器,你的新目录将会被绑定挂载在服务器文档根目录中:
docker run -d --name bmweb -v ~/example-docs:/usr/ocal/apache2/htdocs -p 80:80 httpd:latest
使用‘-v’选项和位置映射来创建绑定挂载卷。该映射以冒号分隔。映射键(冒号之前的路径)是主机文件系统上的一个绝对路径,该键值(冒号后面的路径)是容器中挂载目标存储位置,必须用绝对路径。
Docker管理卷
使用管理卷是一种在文件系统特定位置解藕卷的方法。执行docker run -v
,指定容器目录树中的挂载点,管理卷即可创建。如,在/var/lib/Cassandra/data
指定一个存储卷:
docker run -d -v /var/lib/Cassandra/data --name cass-shared alpine echo Data Container
docker inspect -f "{{json .Volume}}" cass-shared
共享存储卷
创建已知目录
mkdir ~/web-log-example
绑定挂载该目录为日志可写容器
docker run --name plath -d -v ~/web-logs-example:/data dockerinaction/ch4_writer_a
绑定挂载该目录为日志只读容器
docker run --rm -v ~/web-logs-example:/reader-data alpine:latest head /reader-data/logA
查看主机上的日志
cat ~/web-logs-example/logA
终止可写容器
docker stop plath
在此示例中,创建了两个容器,一个名为plath的容器写文件,另一个容器为读该文件。这些容器都有一个共同的绑定挂载卷。
共享和Volume-from标志
docker run --name fowler -v ~/example-books:/library/PoEAA -v /library/DSL alpine:latest echo "Fowler colllection created."
docker run --name knuth -v /library/TAoCP.vo11 -v /library/TAoCP.vo12 -v /library/TAoCP.vo13 -v /library/TAoCP.vo14.a alpine:latest echo "Knuth collection created"
列出所有复制到新容器的存储卷
docker run --name reader --volumes-from fowler --volumes-from knuth alpine:latest ls -l /library/
查新容器的卷列表
docker inspect --format "{{json .Volumes}}" reader
多态容器模式
创建一个存储容器,包含相应的工具
docker run --name tools dockerinaction/ch4_tools
列出这些共享的工具
docker run --rm --volumes-from tools alpine:latest ls /operations/*
利用这些新的工具,启动一个新的容器
docker run -d --name important_application --volumes-from tools dockerinaction/ch4_ia
在容器中使用这些共享工具
docker exec important_application /operations/tools/someTool
关闭该工具
docker rm -vf important_application
清理这些工具
docker rm -v tools