1、容器数据卷是什么
在我们学习docker命令的时候,有一个命令:”docker rm -f 容器ID“ 这个命令,假如我们现在有一个mysql容器,mysql中已经存储了1千万数据,某一个开发/运维手欠,不小心执行了 docker rm -f mysql 命令,这个时候容器是不是就没有了,并且里面的数据也被干掉了。
为了解决这个问题,就有了容器数据卷的出现,将docker容器内的数据保存进宿主机的磁盘中。
1.1、命令、注意点
命令: docker run -it –privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
其中”-v /宿主机绝对路径目录:/容器内目录 “ 就是属于容器卷范畴
注意点:在增加容器卷的时候必须加上”–privileged=true“,否则会出现问题
Docker挂载主机目录访问如果出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个–privileged=true参数即可 如果是CentOS7安全模块会比之前系统版本加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了额,如果要开启,我们一般使用–privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。
2、容器数据卷能干什么
将运用与运行的环境打包镜像,run后形成容器实例运行 ,但是我们对数据的要求希望是持久化的 Docker容器产生的数据,如果不备份,那么当容器实例删除后,容器内的数据自然也就没有了。为了能保存数据在docker中我们使用容器卷。
2.1、特点
- 数据卷可在容器之间共享重用数据
- 卷中的更改可以直接实时生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
3、数据卷案例
3.1、宿主vs容器之间映射添加容器卷
命令:docker run -it –privileged=true -v /usr/local/tool/volumn:/tmp/files centos:7 /bin/bash
以交互方式启动centos 镜像,并且将宿主机 /usr/local/tool/volumn 挂载到 容器/tmp/files 目录上
执行后,宿主机和容器将自动创建相应的文件夹(如果不存在)
咱们也可以通过 docker inspect 容器ID 命令查看挂载是否成功
3.2 、读写规则映射添加
容器卷挂载可以设置 容器内门读写规则,在3.1中,在容器内可以创建2.txt 说明容器内是可以写入的(默认读写都可以)
读写命令:docker run -it –privileged=true -v /usr/local/tool/volumn:/tmp/files centos:7 /bin/bash
等同于 docker run -it –privileged=true -v /usr/local/tool/volumn:/tmp/files:rw centos:7 /bin/bash
只读命令:docker run -it –privileged=true -v /usr/local/tool/volumn:/tmp/files:ro centos:7 /bin/bash
只读实例:
3.3、卷的继承和共享
有的时候我们希望多个容器挂载的 宿主继目录和容器目录一致,则可以先创建一个容器,其他容器继承这个容器的 挂载
命令:docker run -it –privileged=true –volumes-from 父类容器 –name centos2 centos:7 /bin/bash
实例:
注意: centos2继承centos1 ,centos1关闭,不影响cengtos2的容器卷
3.4、多容器卷挂载
命令:
docker run -it –privileged=true -v /usr/local/tool/volumn:/tmp/files -v /usr/local/tool/volumn2:/tmp/files2 centos:7 /bin/bash
同单容器卷挂载效果
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/144709.html