Docker 数据卷(volumes)介绍
Docker 提供了三种不同的方式将数据从 Docker Host 挂载到 Docker 容器,并实现数据的读取和存储:volumes、bind mounts、tmpfs 。
- Volumes 存储在 Docker Host 文件系统的一个路径下,这个路径是由 Docker 来进行管理,路径默认是 /var/lib/docker/volumes/,非 Docker 的进程不能去修改这个路径下面的文件,所以说Volumes 是持久存储数据最好的一种方式。
- Bind mounts 可以存储在 Docker Host 文件系统的任何位置,它们甚至可能是重要的系统文件或目录,非 Docker 的进程或者 Docker 容器可能随时对其进行修改,存在潜在的安全风险。
- Tmpfs 只存储在 Docker Host 的系统内存中,不会写入到系统的文件系统中,不会持久存储。
数据卷(volumes)是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
- 数据卷 可以在容器之间共享和重用;
- 对 数据卷 的修改会立马生效;
- 对 数据卷 的更新,不会影响镜像;
- 数据卷 默认会一直存在,即使容器被删除。
注意:数据卷 的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)。
数据卷
1.创建一个数据卷
创建一个数据卷:my-vol
1 | docker volume create my-vol |
查看所有的数据卷:
1 | docker volume ls |
查看指定 数据卷(my-vol) 的信息:
1 | docker volume inspect my-vol |
2.删除数据卷
1 | docker volume rm my-vol |
数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷。
如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v
这个命令。
无主的数据卷可能会占据很多空间,要清理使用以下命令:
1 | docker volume prune |
挂载数据卷
启动容器的时候,可以先创建好数据卷,也可以直接设置(会创建新的数据卷)。
用法:
-v
或--volume
,数据卷名称:容器中路径
--mount
,由多个键值对组成,以逗号分隔,每个键=组由一个元组组成。--mount
语法比-v
或--volume
更详细
1.docker run使用数据卷
在用 docker run 命令的时候,一般使用-v
或 --mount
标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个 数据卷。
例如:创建一个名为 myweb 的容器,并加载一个 数据卷 到容器的 /usr/share/nginx/html
目录。
1 | $ docker run -d -P \ |
查看容器中数据卷信息:
1 | docker inspect myweb |
以上命令可以查看 myweb 容器的信息,数据卷 信息在 “Mounts”下面。
2.docker-compose使用数据卷
例如:数据卷mysql_data所挂载的是容器中的/var/lib/mysql目录。
1 | version: "3" |
数据卷相关介绍 参考文章:
- 本文标题:Docker 数据卷(volumes)介绍
- 本文作者:HDUZN
- 创建时间:2022-06-19 11:36:52
- 本文链接:http://hduzn.cn/2022/06/19/Docker数据卷/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
评论