• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Docker数据存储之Volumes详解

    默认容器的数据的读写发生在容器的存储层,当容器被删除时其上的数据将会丢失。所以我们应该尽量保证容器存储层不发生写操作,为了实现数据的持久化存储我们需要选择一种方案来保存数据,当前有以下几种方式:

    下图展示了这三种技术:

    Volumes

    Volumes(数据卷)是一个可供一个或多个容器使用的位于宿主机上特殊目录,它拥有以下特性:

    使用数据卷的目的是持久化容器中的数据,以在容器间共享或者防止数据丢失(写入容器存储层的数据会丢失)。

    使用数据卷的步骤一般分为两步:

    1. 创建一个数据卷
    2. 使用-v或--mount参数将数据卷挂载容器指定目录中,这样所有该容器针对该指定目录的写操作都会保存在宿主机上的Volume中。

    Volume管理

    创建一个Volume:

    $ docker volume create my-vol

    查看Volumes:

    $ docker volume ls
    local    my-vol
    $ docker volume inspect my-vol
    [
     {
      "Driver": "local",
      "Labels": {},
      "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
      "Name": "my-vol",
      "Options": {},
      "Scope": "local"
     }
    ]

    我么可以看到创建的Volume my-vol保存在目录/var/lib/docker/volumes/下,以后所有针对该Volume的写数据都会保存中目录/var/lib/docker/volumes/my-vol/_data下。

    删除一个Volume:

    $ docker volume rm my-vol

    或者删除所有未使用的Volumes:

    docker volume prune

    挂载数据卷到容器目录

    创建了一个Volume之后,我们可以在运行容器时通过指定-v或--mount参数来使用该Volume:

    使用--mount参数:

    $ docker run -d \
    
     --name=nginxtest \
    
     --mount source=nginx-vol,destination=/usr/share/nginx/html \
    
     nginx:latest

    source指定volume,destination指定容器内的文件或文件夹。

    或者使用-v参数:

    $ docker run -d \
    
     --name=nginxtest \
    
     -v nginx-vol:/usr/share/nginx/html \
    
     nginx:latest

    挂载成功后,容器从/usr/share/nginx/html目录下读取或写入数据,实际上都是从宿主机的nginx-vol数据卷中读取或写入数据。因此Volumes或Bind mounts也可以看作是容器和宿主机共享文件的一种方式。

    -v参数使用冒号分割source和destination,冒号前半部分是source,后半部分是destination。

    如果你挂载一个还不存在的数据卷,Docker会自动创建它。(因此创建数据卷那一步非必需)

    如果容器中的待挂载的目录不是一个空目录,那么该目录下的文件会被复制到数据卷中。(Bind mounts下,宿主机上的目录总会覆盖容器中的待挂载目录)

    -v参数和--mount参数总的来说功能几乎相同,唯一的区别是在运行一个service时只能够--mount参数来挂载数据卷。

    使用只读数据卷

    有些情况下,我们希望某个数据卷对某个容器来说是只读的,可以通过添加readonly选项来实现:

    $ docker run -d \
    
     --name=nginxtest \
    
     --mount source=nginx-vol,destination=/usr/share/nginx/html,readonly \
    
     nginx:latest

    或者使用-v参数:

    $ docker run -d \
    
     --name=nginxtest \
    
     -v nginx-vol:/usr/share/nginx/html:ro \
    
     nginx:latest

    Volumes使用场景

    请参考这篇文章:Docker数据存储总结

    参考文章

    https://docs.docker.com/storage/volumes/#share-data-among-machines

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

    上一篇:Linux中文件/文件夹无法删除的解决方案
    下一篇:Docker数据存储之Bind mounts详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Docker数据存储之Volumes详解 Docker,数据,存储,之,Volumes,