• Docker 系列(四):Docker 容器数据卷简单使用


    开始之前


    如果你有一些需要持续更新的数据并且希望持久化数据,或者需要在不同的容器之间共享数据,再者需要主机与容器之间共享数据,那么你可以使用数据卷来满足这些需求。

    数据卷定义


    数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

    数据卷可以在容器之间共享和重用。

    对数据卷的修改会立马生效。

    数据卷默认会一直存在,即使容器被删除。

    使用数据卷


    数据卷有两种创建方式一是创建容器时创建数据卷,二是先创建好数据卷,然后在创建容器时挂载这个数据卷,两种方式均可以。

    1. 创建一个数据卷

    docker volume create demo-data
    demo-data

    2. 创建容器使用-v(--volume)参数来挂载数据卷

    docker run --name demo1 -d 
        -v demo-data:/var/www/html nginx:alpine
    docker run --name demo2 -d 
        -v demo-data:/var/www/html nginx:alpine

    3. 列出数据卷

    docker volume ls
    DRIVER      VOLUME NAME
    local       demo-data

    4. 查看数据卷详细信息

    docker volume inspect demo-data
    [
        {
            "Driver": "local",
            "Labels": {},
            "Mountpoint": "/var/lib/docker/volumes/demo-data/_data",
            "Name": "demo-data",
            "Options": {},
            "Scope": "local"
        }
    ]

    5. 删除数据卷

    docker volume rm demo-data
    Error response from daemon: remove demo-data: volume is in use - [#省略..]

    注意: 由于有容器正在使用数据卷,提示无法删除数据卷。

    测试数据卷


    1. 宿主机写入数据

    hostname > /var/lib/docker/volumes/demo-data/_data/hosts.txt

    注意: 这个目录对应创建的 demo-data 数据卷。

    2. 容器写入数据

    docker exec -ti demo1 sh -c 'hostname >> /var/www/html/hosts.txt'
    docker exec -ti demo2 sh -c 'hostname >> /var/www/html/hosts.txt'

    3. 读取数据

    cat /var/lib/docker/volumes/demo-data/_data/hosts.txt
    node0
    87c60cbe6147
    a6bc3c00c790

    4. 删除容器数据卷仍然保留

    docker stop demo1
    docker stop demo2
    docker rm demo1
    docker rm demo2

    数据卷仍然存在

    docker volume ls
    DRIVER      VOLUME NAME
    local       demo-data

    如果需要可以使用 rm 选项删除数据卷

    docker volume rm demo-data

    数据卷已不存在

    docker volume inspect demo-data
    []
    Error: No such volume: demo-data

    命令帮助


    1. 创建容器时挂载数据卷参数

    docker run --help | grep '-v,'
      -v, --volume list     Bind mount a volume

    2. 删除容器时一并删除数据卷参数(慎用)

     docker rm --help | grep '-v'
    
      -v, --volumes   Remove the volumes associated with the container

    3. 数据卷管理命令

    docker volume --help
    Usage:docker volume COMMAND
    Manage volumes
    
    Commands:
      create      Create a volume
      inspect     Display detailed information on one or more volumes
      ls          List volumes
      prune       Remove all unused local volumes
      rm          Remove one or more volumes

    小结


    最后来总结下文章中的知识点

    • 数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除数据卷 。
    • 如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用docker rm -v这个命令。

    转载:https://cloud.tencent.com/developer/article/1540710

  • 相关阅读:
    Add a column in table control
    ALV
    ABAP Object Differences
    Field Symbols, Casting Decimal Places
    fROM PPV report
    python全局变量
    管理商品demo
    Mac系统在Pycharm中切换解释器
    python中 元组
    python中字符串格式化
  • 原文地址:https://www.cnblogs.com/-wenli/p/13646894.html
Copyright © 2020-2023  润新知