docker容器数据卷的读写规则是什么
这篇文章主要介绍“docker容器数据卷的读写规则是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“docker容器数据卷的读写规则是什么”文章能帮助大家解决问题。
在docker创建容器,挂载目录的时候,可能会出现目录无法访问无法打开的问题(cannot open directory .: Permission denied)
只需要加一个 --privileged=true 参数即可,加上这个参数代表是以root用户权限进入容器的,不加就是以普通用户权限进入容器的
例如,test镜像创建一个容器t1
docker run -d -p 5555:5555 -v /etc/config:/tmp/config --privileged=true --name t1 test
正文
容器数据卷,也就是把容器内部目录挂载到宿主机目录(前言中说的挂载文件 -v ),独立于容器的生命周期之外,可以防止容器销毁而丢失文件
特点:
可以在多个容器之间共享或重用
数据卷中的更改可以实时生效
数据卷中的更改不会包含在镜像的更新中
数据卷的生命周期一直持续到没有容器使用
例如,挂载本机/tmp/data目录到容器中的/tmp/docker_data目录(如果本机没有/tmp/data目录,docker会自行创建)
docker run -it --privileged=true -v /tmp/data:/tmp/docker_data --name t1 test /bin/bash
-it进入容器,在/tmp/docker_data目录下创建一个test.txt文件,退出容器到宿主机的挂载目录下,可以看到已经有一个test.txt文件了,反之在宿主机目录下更改或创建文件,容器内目录也同步生效
实现了容器内数据持久化到宿主机,并且双方修改实时生效
如果在容器停止运行的情况下,修改宿主机挂载目录内容,容器启动后,同样会读取最新数据
如果忘记容器挂载到宿主机哪个目录了,可以使用docker inspect命令查看容器信息
docker inspect 容器id
数据卷读写规则
像上面那个案例,默认是可读可写的,也就相当于在后面加了一个rw,即:
docker run -it --privileged=true -v /tmp/data:/tmp/docker_data:rw --name t1 test /bin/bash
如果需要容器内只读,可以改成ro,即
docker run -it --privileged=true -v /tmp/data:/tmp/docker_data:ro --name t1 test /bin/bash
此时在宿主机修改的内容可以同步到容器内,但是容器内是只读的,如果继续在容器内操作,会提示Read-only file system
数据卷的继承和共享
如果想要新创建一个容器t2,也使用t1的数据卷,只需要使用--volumes-from命令继承t1即可
docker run -it --privileged=true --volumes-from t1 --name t2 test /bin/bash
此时t2也就跟t1一样挂载主机目录了,t2里面也可以看到/tmp/docker_data目录下的内容,并实时更新
如果t1停了,对t2是没有影响的,因为t2是继承的t1的挂载规则
关于“docker容器数据卷的读写规则是什么”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注编程网行业资讯频道,小编每天都会为大家更新不同的知识点。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341