美文网首页
docker的Data Volume(数据卷) 浅析

docker的Data Volume(数据卷) 浅析

作者: 早点起床晒太阳 | 来源:发表于2020-12-20 15:54 被阅读0次

    背景

    最近自己写一个dockerfile基于一个基础的image,但是基于这个基础的image生成的容器里面有一层目录有些多余,我想把它删除掉。但是发现删除不了,报错为cannot remove XXX: Device or resource busy,原因就是因为这个image里面设置了挂载目录。这个容器的dockerfile 不知道去哪里了,后面还commit了一次,也不知道历史信息了,哎

    解决

    想着去解决这个问题就来了解docker的Data Volume。

    解析Data Volume

    数据卷(Data Volume)是一个经过特殊设计的目录,它将主机目录直接映射进容器。可以绕过联合文件系统(UFS),为一个或多个容器提供访问。

    数据卷完全独立于容器的生存周期,创建之后不会根据容器的删除而删除。它的特性为以下
    • 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中
    • 数据卷存在于宿主机中,可宿主机与容器进行共享
    • 数据卷可以在容器间共享和重用
    • 可以对数据卷里的内容直接进行修改,修改会马上生效,无论是容器内操作还是本地操作
    • 数据卷的变化不会影响镜像的更新(image中也不会包含数据卷的数据)
    • 卷会一直存在,即使挂载数据卷的容器已经被删除

    Data Volume相关的命令

    删除容器并附带删除数据卷:

    docker rm -v [container name]

    查看所有的数据卷

    docker volume ls

    清除不需要的数据卷

    docker volume prune

    删除数据卷

    docker volume rm 数据卷ID (需要在容器删之后才可以删除)

    查看docker 容器的挂载

    docker inspect container_name | grep Mounts -A 20

    最终

    最终也没有将挂载目录删除,而是有重新换了个目录。这也充分看出在创建image的时候还是需要使用dockerFile,而谨慎使用docker commit去基于已有的docker容器来创建image

    相关文章

      网友评论

          本文标题:docker的Data Volume(数据卷) 浅析

          本文链接:https://www.haomeiwen.com/subject/vtjknktx.html