Docker数据卷挂载命令volume(-v)与mount的使用总结
以下是关于docker数据卷挂载的方式和对比学习笔记:
使用 docker run -v 命令可以同时用于创建 volume mount(卷挂载)和 bind mount(绑定挂载),具体取决于您如何指定源和目标路径。
1. 创建 volume mount:
docker run -v my-volume:/path/in/container my-image
这将创建一个 volume mount,其中 my-volume 是 Docker 卷的名称,将其挂载到容器内的 /path/in/container。
2. 创建 bind mount:
以下这两种方式都允许创建bind mount,可以选择其中一种方式,具体取决于个人的喜好。它们的功能是相同的,只是命令的格式稍有不同。
2.1 使用 docker run -v:
docker run -v /host/path:/container/path my-image
这将创建一个 bind mount,将宿主机上的 /host/path 目录绑定挂载到容器内的 /container/path 目录
2.2 使用 docker run --mount:
在Docker中,创建bind mount的方式不仅可以使用 docker run -v 命令,还可以使用 --mount 参数。以下是不同方式创建bind mount的示例:
docker run --mount type=bind,source=/host/path,target=/container/path my-image
这是使用 --mount 参数的方式,其中 type=bind 表示创建bind mount,source 是宿主机上的路径,target 是容器内的路径。
3. 创建bind mount和挂载volume的比较
对比项 | bind mount | volume |
---|---|---|
Source位置 | 用户指定 | /var/lib/docker/volumes/ |
Source为空 | 覆盖dest为空 | 保留dest内容 |
Source非空 | 覆盖dest内容 | 覆盖dest内容 |
Source种类 | 文件或目录 | 只能是目录 |
可移植性 | 一般(自行维护) | 强(docker托管) |
宿主直接访问 | 容易(仅需chown) | 受限(需登陆root用户)* |
如果主机路径不存在 | 命令报错 | 自动创建 |