• 数据卷
    • 选择 -v 还是 -–mount 参数
    • 创建一个数据卷
    • 启动一个挂载数据卷的容器
    • 查看数据卷的具体信息
    • 删除数据卷

    数据卷

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

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

    • 数据卷 的修改会立马生效

    • 数据卷 的更新,不会影响镜像

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

    注意:数据卷 的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的 数据卷

    选择 -v 还是 -–mount 参数

    Docker 新用户应该选择 --mount 参数,经验丰富的 Docker 使用者对 -v 或者 --volume 已经很熟悉了,但是推荐使用 --mount 参数。

    创建一个数据卷

    1. $ docker volume create my-vol

    查看所有的 数据卷

    1. $ docker volume ls
    2. local my-vol

    在主机里使用以下命令可以查看指定 数据卷 的信息

    1. $ docker volume inspect my-vol
    2. [
    3. {
    4. "Driver": "local",
    5. "Labels": {},
    6. "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
    7. "Name": "my-vol",
    8. "Options": {},
    9. "Scope": "local"
    10. }
    11. ]

    启动一个挂载数据卷的容器

    在用 docker run 命令的时候,使用 --mount 标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个 数据卷

    下面创建一个名为 web 的容器,并加载一个 数据卷 到容器的 /webapp 目录。

    1. $ docker run -d -P \
    2. --name web \
    3. # -v my-vol:/wepapp \
    4. --mount source=my-vol,target=/webapp \
    5. training/webapp \
    6. python app.py

    查看数据卷的具体信息

    在主机里使用以下命令可以查看 web 容器的信息

    1. $ docker inspect web

    数据卷 信息在 “Mounts” Key 下面

    1. "Mounts": [
    2. {
    3. "Type": "volume",
    4. "Name": "my-vol",
    5. "Source": "/var/lib/docker/volumes/my-vol/_data",
    6. "Destination": "/app",
    7. "Driver": "local",
    8. "Mode": "",
    9. "RW": true,
    10. "Propagation": ""
    11. }
    12. ],

    删除数据卷

    1. $ docker volume rm my-vol

    数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。

    无主的数据卷可能会占据很多空间,要清理请使用以下命令

    1. $ docker volume prune