Docker 持久化存储 Bind mounts

2023-10-10 16:50
文章标签 docker bind 存储 持久 mounts

本文主要是介绍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:



这篇关于Docker 持久化存储 Bind mounts的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/181780

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

使用IDEA部署Docker应用指南分享

《使用IDEA部署Docker应用指南分享》本文介绍了使用IDEA部署Docker应用的四步流程:创建Dockerfile、配置IDEADocker连接、设置运行调试环境、构建运行镜像,并强调需准备本... 目录一、创建 dockerfile 配置文件二、配置 IDEA 的 Docker 连接三、配置 Do

SpringBoot3.X 整合 MinIO 存储原生方案

《SpringBoot3.X整合MinIO存储原生方案》本文详细介绍了SpringBoot3.X整合MinIO的原生方案,从环境搭建到核心功能实现,涵盖了文件上传、下载、删除等常用操作,并补充了... 目录SpringBoot3.X整合MinIO存储原生方案:从环境搭建到实战开发一、前言:为什么选择MinI

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker

SpringBoot+Docker+Graylog 如何让错误自动报警

《SpringBoot+Docker+Graylog如何让错误自动报警》SpringBoot默认使用SLF4J与Logback,支持多日志级别和配置方式,可输出到控制台、文件及远程服务器,集成ELK... 目录01 Spring Boot 默认日志框架解析02 Spring Boot 日志级别详解03 Sp

Python实现对阿里云OSS对象存储的操作详解

《Python实现对阿里云OSS对象存储的操作详解》这篇文章主要为大家详细介绍了Python实现对阿里云OSS对象存储的操作相关知识,包括连接,上传,下载,列举等功能,感兴趣的小伙伴可以了解下... 目录一、直接使用代码二、详细使用1. 环境准备2. 初始化配置3. bucket配置创建4. 文件上传到os

java实现docker镜像上传到harbor仓库的方式

《java实现docker镜像上传到harbor仓库的方式》:本文主要介绍java实现docker镜像上传到harbor仓库的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 前 言2. 编写工具类2.1 引入依赖包2.2 使用当前服务器的docker环境推送镜像2.2

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

MySQL之InnoDB存储引擎中的索引用法及说明

《MySQL之InnoDB存储引擎中的索引用法及说明》:本文主要介绍MySQL之InnoDB存储引擎中的索引用法及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录1、背景2、准备3、正篇【1】存储用户记录的数据页【2】存储目录项记录的数据页【3】聚簇索引【4】二