Docker存储
storage driver
镜像分层读写。适用于无状态应用,不需保存数据。
查看Docker安装时默认的driver:docker info
Data volume
Host中的目录或文件,可以被mount到容器的文件系统中。
bind mount
将Host上已存在的目录或文件mount到容器。如:docker run -d -p 80:80 -v ~/htdocs:/usr/local/apache2/htdocs httpd
设置读写权限:docker run -d -p 80:80 -v ~/htdocs:/usr/local/apache2/htdocs:ro httpd
向容器添加单个文件,不覆盖原容器目录:docker run -d -p 80:80 -v ~/htdocs/index.html:/usr/local/apache2/htdocs/new_index.html httpd //文件必须存在,否则会被当做目录
docker managed volume
不需要指定mount源,在/var/lib/docker/volumes下生成目录作为源,将容器中的文件复制到Host上,如:docker run -d -p 80:80 -v /usr/local/apache2/htdocs httpd
查看容器volume配置信息:docker inspect <container>或docker volume ls && docker volume inspect <volume-name> //只能查看docker managed volume,无法查看bind mount和volume对应的容器
无法设置读写权限,默认可读可写。
将Host中的文件拷贝到volume中:docker cp ~/htdocs/index.html <container>:/usr/local/apache2/htdocs
或使用Linux命令cp拷贝到/var/lib/docker/volumes/xxx
volume container
提供一个专门的容器,做共享数据。
docker create --name vc_data -v ~/htdocs:/usr/local/apache2/htdocs -v /other/useful/tools ubuntu
docker run --name web1 -d -p 80 --volumes-from vc_data httpd
docker run --name web2 -d -p 80 --volumes-from vc_data httpd
data-packed volume container
构建镜像
FROM busybox:latest
ADD htdocs /usr/local/apache2/htdocs
VOLUMN /usr/local/apache2/htdocs //相当于-v,创建docker managed volume
docker build -t datapacked .
创建data-packed volume container:docker create --name vc_data datapacked
启动容器并使用共享目录:docker run -d -p 80 --volumes-from vc_data httpd
删除volume
docker不会销毁bind mount
docker rm -v <container> //删除容器同时删除volume
docker volume ls
docker volume rm <volume>
docker volume rm ${docker volume ls -q} //批量删除孤儿volume

浙公网安备 33010602011771号