问:容器数据卷是什么?
答:类似redis的rdb与aof。将docker容器内的数据保存进宿主机的磁盘中持久化,即使宕机 也不会导致数据丢失。
问:容器数据卷有什么特点?
答: 1、数据见在容器之间共享或重用数据。
2、数据卷中的更改可以直接实时生效。
3、数据卷中的更改不会包含在镜像的更新中
3、数据卷的生命周期一直持续到没有容器使用它为止。
运行一个带有容器卷存储功能的容器实例:
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu
Docker挂载主机目录访问如果出现cannot open directory .: Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可
测试:
在 u1容器内指定目录下/tmp/docker_data 新建文件。
该文件会实时同步到宿主机指定目录下/tmp/host_data。(反之亦然)
若此时新建一个容器名为u2,并且u2容器也想使用这个共享目录应该怎么弄?
答:使用容器u2继承u1的容器卷。
docker run -it --privileged-true --volumes-from u1 --name u2 ubuntu
容器间可以相互继承容器卷。
小提示:
默认情况下是允许容器卷可读写的(:rw > read、write):
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data:rw --name=u1 ubuntu
如果想让容器卷设置为只读模式可设置(:ro > read only):
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data:ro --name=u1 ubuntu
自此!代表着宿主机的 /tmp/host_data 与容器内的 /tmp/docker_data 目录公用数据,两目录之前数据互通,即使容器宕机,宿主机依旧保持编写数据,等待容器重新启动后,数据依旧保持一致。
类似于硬链接。