在上文自建registry中就使用到了容器数据卷
容器数据卷
卷就是目录或者文件,存在于一个或多个容器中,由docker挂在到容器,但不属于联合文件系统,因此能绕过联合文件系统提供的一些持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除是删除其挂在的数据卷。
容器数据卷可以完成主机目录与容器内数据做映射,将容器内数据备份+持久化到本地
挂载
使用-v参数进行数据卷的挂载
-v /宿主机绝对路径目录:/容器内目录
示例
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu
宿主机/tmp/host_data目录与docker容器内/tmp/docker_data形成映射关系。
使用
使用该命令创建一个ubuntu容器,并将宿主机/tmp/host_data目录作为容器卷挂载到容器ub的/tmp/docker_data目录
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=ub ubuntu
数据互通
容器内的/tmp/docker_data与宿主机/tmp/host_data目录互通。
容器卷ro rw规则
默认情况下容器内对数据卷是拥有RW读写权限的。在需要的情况下,可以对其进行只读限制。
在-v参数后加上:ro
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data:ro --name=ubro ubuntu
继承与共享
--volumes-from 可以从指定的容器中继承容器卷配置
示例
以上文ubro容器为例,创建新的容器集成它的容器卷
docker run -it --privileged=true --volumes-from ub --name u2 ubuntu
--privileged=true
解决目录权限不足的问题