docker 中 File Sharing 和Volumes 的区别

2024-06-18 11:28

本文主要是介绍docker 中 File Sharing 和Volumes 的区别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在 Docker 中,File SharingVolumes 都涉及到将文件和目录从主机系统映射到容器中,但它们的用途和实现方式有一些重要的区别:

一、简介

  1. File Sharing 是 Docker Desktop 在 Windows 和 macOS 上的一项功能,允许你将主机文件系统的一部分共享给 Docker 容器。这个功能通常用于让 Docker 容器访问主机上的文件。具体来说:
  • 共享机制

    • 你需要在 Docker Desktop 的设置中手动配置哪些目录可以被 Docker 容器访问。
    • 通过这种方式,容器可以访问指定的主机目录。
    • 在这里插入图片描述
  • 使用场景

    • 常用于开发环境中,当你希望在主机系统和容器之间快速同步代码和配置文件时。
    • 适用于需要频繁访问和修改主机上的文件的场景。
  1. Volumes 是 Docker 提供的持久化存储解决方案。Volumes 由 Docker 管理,存储在 Docker 主机文件系统的特定位置。使用 Volumes 有以下特点:
  • 文件结构
    在这里插入图片描述

  • 管理和隔离

    • Volumes 是由 Docker 管理的,并且可以被多个容器共享使用。
    • 它们提供了更高的隔离性和安全性,适合生产环境中的数据持久化存储。
  • 使用场景

    • 常用于数据库、日志文件、配置文件等需要持久化存储的数据。
    • 适用于需要跨容器共享数据的场景。
    • 适用于需要在容器重启后仍然保留数据的场景。

二、 具体区别

  1. 定义和配置

    • File Sharing:在 Docker Desktop 的设置中配置,可以访问主机上的任意目录。
    • Volumes:通过 Docker CLI 或 Docker Compose 配置,使用 docker volume 命令进行管理。
  2. 性能和隔离性

    • File Sharing:可能会受到主机文件系统和 Docker 之间的性能开销影响,特别是在 Windows 和 macOS 上。
    • Volumes:通常性能更好,因为它们是由 Docker 引擎直接管理和优化的。
  3. 持久性

    • File Sharing:数据存储在主机的文件系统上,容器删除后数据仍然存在。
    • Volumes:数据同样持久化存储,容器删除后数据仍然存在,但存储位置由 Docker 管理。
  4. 使用方式

    • File Sharing:需要在 Docker Desktop 设置中启用共享目录,然后使用 -v 参数挂载。例如:
      docker run -v /host/path:/container/path ...
      
    • Volumes:可以使用 -v--mount 参数挂载 Volume。例如:
      docker volume create my-volume
      docker run -v my-volume:/container/path ...
      
  5. 文件系统结构
    在这里插入图片描述

三、示例

File Sharing 示例

确保在 Docker Desktop 设置中共享了 E:\docker 目录:

docker run --name nginx-web -p 8088:80 -v /e/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /e/docker/nginx/www:/usr/share/nginx/html -v /e/docker/nginx/logs:/var/log/nginx -d nginx
Volume 示例

创建一个 Volume 并使用它:

docker volume create nginx-conf
docker volume create nginx-html
docker volume create nginx-logsdocker run --name nginx-web -p 8088:80 -v nginx-conf:/etc/nginx/nginx.conf -v nginx-html:/usr/share/nginx/html -v nginx-logs:/var/log/nginx -d nginx

四、总结

  • File Sharing 适用于开发环境中的快速文件同步和访问。
  • Volumes 适用于生产环境中的数据持久化和跨容器数据共享。
    选择哪种方式取决于你的具体需求和使用场景。

这篇关于docker 中 File Sharing 和Volumes 的区别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

Vue和React受控组件的区别小结

《Vue和React受控组件的区别小结》本文主要介绍了Vue和React受控组件的区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录背景React 的实现vue3 的实现写法一:直接修改事件参数写法二:通过ref引用 DOMVu

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Go之errors.New和fmt.Errorf 的区别小结

《Go之errors.New和fmt.Errorf的区别小结》本文主要介绍了Go之errors.New和fmt.Errorf的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考... 目录error的基本用法1. 获取错误信息2. 在条件判断中使用基本区别1.函数签名2.使用场景详细对

Redis中哨兵机制和集群的区别及说明

《Redis中哨兵机制和集群的区别及说明》Redis哨兵通过主从复制实现高可用,适用于中小规模数据;集群采用分布式分片,支持动态扩展,适合大规模数据,哨兵管理简单但扩展性弱,集群性能更强但架构复杂,根... 目录一、架构设计与节点角色1. 哨兵机制(Sentinel)2. 集群(Cluster)二、数据分片

一文带你迅速搞懂路由器/交换机/光猫三者概念区别

《一文带你迅速搞懂路由器/交换机/光猫三者概念区别》讨论网络设备时,常提及路由器、交换机及光猫等词汇,日常生活、工作中,这些设备至关重要,居家上网、企业内部沟通乃至互联网冲浪皆无法脱离其影响力,本文将... 当谈论网络设备时,我们常常会听到路由器、交换机和光猫这几个名词。它们是构建现代网络基础设施的关键组成

redis和redission分布式锁原理及区别说明

《redis和redission分布式锁原理及区别说明》文章对比了synchronized、乐观锁、Redis分布式锁及Redission锁的原理与区别,指出在集群环境下synchronized失效,... 目录Redis和redission分布式锁原理及区别1、有的同伴想到了synchronized关键字

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

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

JAVA覆盖和重写的区别及说明

《JAVA覆盖和重写的区别及说明》非静态方法的覆盖即重写,具有多态性;静态方法无法被覆盖,但可被重写(仅通过类名调用),二者区别在于绑定时机与引用类型关联性... 目录Java覆盖和重写的区别经常听到两种话认真读完上面两份代码JAVA覆盖和重写的区别经常听到两种话1.覆盖=重写。2.静态方法可andro

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域