Dokcer数据管理

遗留问题

容器的特性

  • Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部增加一个读写层
  • 如果运行中的容器修改了现有的一个已经存在的文件,那么该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏,即“写时复制”机制
  • 关闭重启容器,其数据不受影响;但删除Docker容器,则其改变将会全部丢失

问题

  • 存在于联合文件系统中,不易被宿主机访问
  • 容器间数据共享不便
  • 删除容器其数据会消失

解决方案: 数据卷
数据卷时容器上的一个或多个目录,此类目录可绕过联合文件系统,与宿主机上的某目录绑定
在这里插入图片描述

Docker存储驱动(storage driver)

Docker存储驱动(storage driver 是Docker的核心组件,它是Docker实现分层镜像的基础

  • device mapper(DM):性能和稳定性存在问题,不推荐生产环境使用
  • btrfs:社区实现了btrfs deiver,稳定性和性能存在问题
  • overlayfs:内核3.18overlayfs进入主线,性能和稳定性优异,第一选择
    在这里插入图片描述

数据卷的作用

数据卷时一个可供容器使用的特殊目录

  • 数据卷可以在容器之间共享和重用
  • 数据卷修改会立即生效
  • 数据卷的更新不会影响镜像
  • 如果容器使用数据卷,该卷会一直存在

数据卷的使用

Docker-managed Volume(Docker管理卷)(匿名挂载)

docker run -it --name test -v ContainerDir imageid

Bind-mount Volume(绑定卷)(指定路径挂载)

docker run -it --name test -v HostDir:ContainerDir imageid

Union Volume(容器卷)

docker run -it --name test --volumes-from ContainerName imageid

上面说到了一个匿名挂载,当使用Docker管理卷时,docker会自动生成一个匿名卷,通过docker volume ls可以查看到
那具名挂载又是什么呢? docker run -it --name test -v juanming:ContainerDir
imageid 这时候再使用docker volume ls就可以看到数据卷中多了一个“juanming”的数据卷,当然你可以使用docker volume inspect juanming查看数据卷的详细内容

卷管理命令

# 删除没有挂载到容器的卷
docker volume prune
# 删除指定的数据卷
docker volume rm 卷名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值