容器数据卷

容器数据卷的作用

可以把容器内的数据备份+持久化到本地主机目录,完全独立于容器的生存周期,docker不会在容器删除时删除其挂载的数据卷。

命令格式

docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名或镜像ID

#需要加--privileged=true 这个参数,不然可能会报权限错误
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名或镜像ID


案例:
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data ubuntu /bin/bash # /host_data是宿主机上要存放数据的目录,docker_data是容器内存放数据的目录,执行命令时如果没有目录会自动生成这两个目录

#在容器内新建文件
cd /tmp/docker_data
touch docker.txt

#这时ctrl+q+p退出容器, 打开宿主机的/tmp/host_data目录,里面会自动同步了docker.txt文件
cd /tmp/host_data
ls

#又在宿主机的/tmp/host_data目录创建一个文件,也会自动同步到容器的/tmp/docker_data目录
echo "hello world" > a.txt

#把ubuntu容器停止,再启动,数据还是能成功同步回来
docker stop ubuntu的容器ID
docker start ubuntu的容器ID

限制容器只能读取不能写入:

docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data:ro ubuntu # 这里的ro是read-only,容器内的目录被限制了,无法写入东西,宿主机是可以正常写的,一般是默认可读可写

容器数据卷间的继承

命令格式:
docker run -it --privileged=true --volumes-from 父类 容器名/ID #父类是要继承的容器的名字或ID

案例:
启动2个ubuntu容器,分别用--name起别名为u1和u2,设置u1和宿主机的数据卷,u2继承u1;停止u1容器,u2容器和宿主机的数据同步依旧正常,重新启动u1容器后,u1容器和u2容器以及宿主机三者之间的数据还是正常同步的。

#选择ubuntu为image来启动2个容器u1 u2
docker run -it --privileged=true -v /tmp/host_data:/tmp/u1_data  --name=u1 ubuntu 

docker run -it --privileged=true --volumes-from  u1 --name=u2  ubuntu #u2继承u1时,会自动在u2容器内创建/tmp/u1_data目录,能正常和宿主机同步数据


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值