Docker 容器数据卷

2024-01-07 17:57:33

1 卷是什么

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
卷的用途就是将Docker内的数据保存到宿主机的磁盘中

2 挂载卷命令

**docker run -v 宿主机路径:容器内路径[:读写权限] --privileged=true [其它参数] image

  • 读写权限 是对容器内的限制,默认为rw 可读可写,其它可选值还有ro 只读
  • –privileged=true,设置为true, container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限,建议加上,否则可能会出现:“ cannot open directory .: Permission denied”
    如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,ESELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用-privleged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即**使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

挂载后,
1 docker修改挂载文件、目录,主机同步获得
2 主机修改挂载文件、目录,docker同步获得
3 docker容器stdp,主机修改,docker容器重启数据自动同步。

2.1查看挂载信息

 docker inspect c72#(容器ID)
 #查看输出的Mounts 部分 Source 宿主机路径,Destination 容器内路径
"Mounts": [
            {
                "Type": "bind",
                "Source": "/tmp/dockerubuntu",
                "Destination": "/tmp/data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

2.2 读写限制

docker run -v 宿主机路径:容器内路径[:读写权限] --privileged=true [其它参数] image

  • 读写权限 是对容器内的限制,默认为rw 可读可写,其它可选值还有ro 只读

2.2 卷的继承和共享

启动时加参数
–volumes-from 父类容器ID
其实质就是: -v 父类容器ID的挂载规则 ,容器移动后 跟父容器除挂载目录一样外并无其它关系

文章来源:https://blog.csdn.net/prcyang/article/details/135437781
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。