容器中的数据可以存储在数据卷和数据卷容器中;
数据卷的使用:
数据卷的使用类似Linux挂载文件目录,通俗讲,数据卷是一个可以供容器使用的特殊目录;
数据卷的创建:
- docker run -ti --name ubuntu -v /Data ubuntu:16.04 bash
此时,根目录下有一个Data目录,这个目录就是刚才讲的数据卷。
数据卷的删除:
数据卷是用来长期存储数据的,因此数据卷的生命周期独立于容器;
一个数据卷可以同时被多个容器挂载;
容器结束后数据卷并不会被删除,要删除数据卷的话使用 -v 参数;
- docker rm -v ubuntu
注:删除最后一个挂载有数据卷容器的时候需要使用 -v 参数来删除数据卷,否则之后清理这些数据卷会很麻烦;
挂载一个宿主机的目录作为数据卷:
- docker run -ti --name -v /home/captain/demo/:/Data ubuntu:16.04 bash
该命令会把宿主机的目录 /home/admin/demo 挂载到容器的 /Data 目录下;
注:正常情况下,宿主机目录挂载到容器后,容器可以访问到宿主机目录中的内容的,但现在容器中 ls Data 时没有任何数据,不知道是否时win10子系统的原因;
docker 挂载数据卷的默认权限是读写,可以通过 :ro 选项将权限改为只读:
- docker rm -v ubuntu #先删掉刚才创建的数据卷挂载在宿主机上的容器
- docker run -it --name ubuntu -v /home/captain/demo/:/Data:ro ubuntu:16.04 bash
数据卷容器的使用:
数据卷容器也是一个普通的容器,只是专门作数据卷供其他容器挂载使用;
首先,创建数据卷容器:
- docker run -itd -v /Data --name ubuntu ubuntu:16.04
其次,创建另一个容器挂载刚才创建的数据卷容器: - docker run -it --volumes-from ubuntu --name use_data_volumes ubuntu:16.04
注:
数据卷容器被挂载的时候不必保持运行;
如果删除了容器 ubuntu 和 use_data_volumes,数据卷不会被删除;如果想要删除数据卷,应该使用docker rm -v 容器名;