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

 

posted @ 2018-04-14 20:20  AaronCnblogs  阅读(98)  评论(0)    收藏  举报