不使用Docker如何挂载卷?替代$docker run -v命令的实现方案
替代
docker run -v的目录挂载实现方案 docker run -v是--volume参数的缩写,官方现在更推荐使用显式度更高的挂载方式,常用替代方案如下:
--mount显式挂载参数
是当前Docker官方首推的挂载命令,语法拆分更清晰,不容易出现参数配置错误,支持绑定挂载、匿名卷、命名卷全场景。绑定挂载的示例用法:docker run --mount type=bind,source=/宿主机本地目录路径,target=/容器内目标路径 镜像名称
和-v的核心差异是:如果指定的宿主机绑定目录不存在,--mount会直接抛出错误,不会像-v一样自动创建目录,更符合操作预期。- Docker Compose 配置挂载
多容器部署场景下可以直接在docker-compose.yml中预配置挂载规则,不用每次启动容器都手动敲命令,绑定挂载的配置示例:
配置完成后执行services: your-service: image: nginx:alpine volumes: # 简写写法,和`-v`语法逻辑一致 - /宿主机本地目录路径:/容器内目标路径 # 显式写法,和`--mount`参数逻辑一致 - type: bind source: /宿主机本地目录路径 target: /容器内目标路径docker compose up -d即可自动完成挂载。 - Docker 命名卷挂载
如果只需要持久化容器数据、不需要直接在宿主机上修改挂载目录内容,可以使用Docker原生的命名卷实现挂载,首先执行命令创建命名卷:docker volume create 自定义卷名
启动容器时挂载该卷即可:docker run --mount type=volume,source=自定义卷名,target=/容器内目标路径 镜像名称
命名卷支持跨容器共享、一键备份迁移,比绑定挂载更适合纯容器数据持久化场景。
内容的提问来源于stack exchange,提问作者Gioni
相关产品推荐
相关产品推荐

