当前位置: 首页 > news >正文

Docker 持久化存储 Bind mounts

Docker 持久化存储 Bind mounts

  • Bind mounts 的 -v 与 --mount 区别
  • 启动容器基于bind mount
  • 挂载到容器中的非空目录
  • 只读 bind mount
  • compose 中使用 bind mount


官方文档:https://docs.docker.com/storage/bind-mounts/

在这里插入图片描述


Bind mounts 的 -v 与 --mount 区别

  • 如果使用-v--volume绑定挂载 Docker主机上尚不存在的文件或目录,-v 将自动创建一个目录
  • 如果使用--mount绑定挂载Docker主机上尚不存在的文件或目录,Docker不会自动创建它,而是会生成一个错误。

启动容器基于bind mount

  • 启动容器基于 bind mount
    • --mount
      docker run -d \-it \--name devtest \--mount type=bind,source="$(pwd)"/target,target=/app \nginx:latest
      
    • -v
      docker run -d \-it \--name devtest \-v "$(pwd)"/target:/app \nginx:latest
      
  • 使用 docker inspect devtest 查看详情中的Mounts部分。
    "Mounts": [{"Type": "bind","Source": "/tmp/source/target","Destination": "/app","Mode": "","RW": true,"Propagation": "rprivate"}
    ],
    

挂载到容器中的非空目录

  • 如果将目录绑定挂载到容器上的非空目录中,则绑定挂载会遮挡该目录的现有内容。
  • 益处:在不构建新镜像的情况下,测试应用程序的新版本。
  • 弊处:如果将容器的 /usr 替换成主机上的 /tmp , 在大多数情况下,会导致容器无法正常启动。
    • --mount
      docker run -d \-it \--name broken-container \--mount type=bind,source=/tmp,target=/usr \nginx:latestdocker: Error response from daemon: oci runtime error: container_linux.go:262:
      starting container process caused "exec: \"nginx\": executable file not found in $PATH".
    • -v
      docker run -d \-it \--name broken-container \-v /tmp:/usr \nginx:latestdocker: Error response from daemon: oci runtime error: container_linux.go:262:
      starting container process caused "exec: \"nginx\": executable file not found in $PATH".
      

      容器已经创建但是未启动,用 docker container rm broken-container 删除。


只读 bind mount

  • 创建
    • --mount
      docker run -d \-it \--name devtest \--mount type=bind,source="$(pwd)"/target,target=/app,readonly \nginx:latest
      
    • -v
      docker run -d \-it \--name devtest \-v "$(pwd)"/target:/app:ro \nginx:latest
      
  • docker inspect devtest 查看详情Mounts部分
    "Mounts": [{"Type": "bind","Source": "/tmp/source/target","Destination": "/app","Mode": "ro","RW": false,"Propagation": "rprivate"}
    ],
    

compose 中使用 bind mount

version: "3.9"
services:frontend:image: node:ltsvolumes:- type: bindsource: ./statictarget: /opt/app/static
volumes:myapp:



http://www.lryc.cn/news/64095.html

相关文章:

  • LVS +Keepalived 高可用群集部署
  • Kafka调优
  • Debezium系列之:详细介绍Debezium2.X版本导出Sqlserver数据库Debezium JMX指标的方法
  • 基于PWM技术的三相光伏逆变器研究(Simulink)
  • 〖Python网络爬虫实战㉑〗- 数据存储之JSON操作
  • 不得不说的行为型模式-责任链模式
  • 基于dsp+fpga+AD+ENDAC的半导体运动台高速数据采集电路仿真设计(四)
  • 快速搭建Electron+Vite3+Vue3+TypeScript5脚手架 (无需梯子,快速安装Electron)
  • 语义分割学习笔记(二)转置卷积
  • docker运行PostgreSQL数据库维护,执行脚本备份数据库与更新表结构
  • 【计算机网络】127.0.0.1、0.0.0.0、localhost地址是什么?
  • 分享2款CSS3母亲节主题寄语文字动画特效
  • 【AutoGPT】AutoGPT出现,是否意味着ChatGPT已被淘汰
  • ( 字符串) 9. 回文数 ——【Leetcode每日一题】
  • SpringAOP
  • 学系统集成项目管理工程师(中项)系列15_质量管理
  • 统计学习方法第四章——朴素贝叶斯法
  • 安装配置goaccess实现可视化并实时监控nginx的访问日志
  • springboot第14集:MyBatis-CRUD讲解
  • ES6新特性(1)
  • 这就是二分查找?(C语言版)
  • 操作系统之内存管理
  • 【Python | matplotlib】matplotlib.cm的理解以及举例说明
  • 数据库单实例升级
  • Photoshop如何使用选区之实例演示?
  • ThreadLocal的使用介绍和底层原理解析和开源框架的使用实例
  • 带你学c带你飞-P7取值范围
  • ramfs, rootfsinitramfs
  • 十三届蓝桥杯研究生组国赛-最大公约数(线段树+二分)
  • 数据结构——二叉树层序遍历