一、前言
用户可以通过
二、命令用法
--volume(-v)
参数
1 2 3 4 | docker run --name $CONTAINER_NAME -it \ -v $PWD/$CONTAINER_NAME/app:/app:rw \ -v $PWD/$CONTAINER_NAME/data:/data:ro \ avocado-cloud:latest /bin/bash |
注释:
- 命令格式:
[[HOST-DIR:]CONTAINER-DIR[:OPTIONS]]] - 如果指定
HOST-DIR 则必须是绝对路径,如果路径不存在则会自动创建 - 实例中的
rw 为读写,ro 为只读
--mount
参数
1 2 3 4 | docker run --name $CONTAINER_NAME -it \ --mount type=bind,source=$PWD/$CONTAINER_NAME/app,destination=/app \ --mount source=${CONTAINER_NAME}-data,destination=/data,readonly \ avocado-cloud:latest /bin/bash |
注释:
- 挂载volume命令格式:
[type=volume,]source=my-volume,destination=/path/in/container[,...] - 创建bind mount命令格式:
type=bind,source=/path/on/host,destination=/path/in/container[,...] - 如果创建bind mount并指定
source 则必须是绝对路径,且路径必须已经存在 - 示例中
readonly 表示只读
三、差异总结
1、创建bind mount和挂载volume的比较
对比项 | bind mount | volume |
---|---|---|
Source位置 | 用户指定 | /var/lib/docker/volumes/ |
Source为空 | 覆盖dest为空 | 保留dest内容 |
Source非空 | 覆盖dest内容 | 覆盖dest内容 |
Source种类 | 文件或目录 | 只能是目录 |
可移植性 | 一般(自行维护) | 强(docker托管) |
宿主直接访问 | 容易(仅需chown) | 受限(需登陆root用户)* |
*注释:Docker无法简单地通过
2、创建bind mount时使用--volume 和--mount 的比较
对比项 | ||
---|---|---|
如果主机路径不存在 | 自动创建 | 命令报错 |
转载地址:https://shichen.blog.csdn.net/article/details/106292036