1.什么是数据卷volume
为了了解什么是Docker Volume,首先我们需要明确Docker内的文件系统是如何工作的。Docker镜像被存储在一系列的只读层。当我们开启一个容器,Docker读取只读镜像并添加一个读写层在顶部。如果正在运行的容器修改了现有的文件,该文件将被拷贝出底层的只读层到最顶层的读写层。在读写层中的旧版本文件隐藏于该文件之下,但并没有被不破坏 - 它仍然存在于镜像以下。当Docker的容器被删除,然后重新启动镜像时,将开启一个没有任何更改的新的容器 - 这些更改会丢失。此只读层及在顶部的读写层的组合被Docker称为Union File System(联合文件系统)。
为了能够保存(持久)数据以及共享容器间的数据,Docker提出了Volumes的概念。很简单,volumes是目录(或者文件),它们是外部默认的联合文件系统或者是存在于宿主文件系统正常的目录和文件。
2.为什么使用数据卷volume
Docker的镜像是由一系列的只读层组合而来,当启动一个容器的时候,Docker加载镜像的所有只读层,并在最上层加入一个读写层。这个设计使得Docker可以提高镜像构建、存储和分发的效率,节省了时间和存储空间,然而也存在如下问题。
(1)容器中的文件在宿主机上存在形式复杂,不能在宿主机上很方便的对容器中的文件进行访问
(2)多个容器之间的数据无法共享
(3)当删除容器时,容器产生的数据将丢失
为了解决这些问题,Docker引入了数据卷(volume)机制。volume是存在一个或多个容器中的特定文件或文件夹,这个目录能够独立于联合文件系统的形式在宿主机中存在,并为数据的共享与持久提供一下便利。
(1)volume在容器创建时就初始化,在容器运行时就可以使用其中的文件
(2)volume能在不同的容器之间共享和重用
(3)对volume中的数据的操作会马上生效
(4)对volume中数据操作不会影响到镜像本身
(5)volume的生存周期独立于容器的生存周期,即使删除容器,volume仍然会存在,没有任何容器使用的volume也不会被Docker删除
http://blog.csdn.net/dream_broken/article/details/52314993
相关推荐
主要介绍了浅谈docker学习之docker数据卷(volume),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
**数据卷容器(Data Volume Container)** 数据卷容器是另一种数据管理方式,它是一个具有数据卷的普通容器,但其主要目的是为其他容器提供共享数据卷。创建数据卷容器的步骤如下: 1. 首先,创建一个带有数据卷的...
Docker 数据卷和容器编排,记录下来! 数据卷 数据卷可以绕过拷贝系统,在多个容器之间、容器和宿主机之间共享目录或文件,数据卷绕过了拷贝系统,可以达到本地磁盘I/O性能。 运行容器时,指定一个数据卷 $ docker ...
由于生产环境中应用数据的安全、可用性、共享和性能等方面要求与RootImage的存储方式完全不同,因此Docker采用了独立的数据访问接口Volume来处理应用数据的存储。Volume与CoW(Copy-on-Write)的分层文件系统是完全...
但是如果我们需要修改我们的运行代码,或者有输入输出文件的时候,我们就没有办法了,每一个container运行完毕后,其分配的资源以及文件系统都会消失,那么我们就需要在本地给docker container挂载一个卷,这样在...
docker-volume-backup 将Docker卷备份到任何S3兼容存储中。 可以将 Docker映像用作现有Docker设置的sidecar容器。 它可以处理将Docker卷定期备份到任何与S3兼容的存储的操作,并可以将旧的备份(如果已配置)轮换掉...
docker-s3-volume 实现了将Docker数据卷与S3桶(Bucket)的同步。它在容器启动时将S3上的数据下载到本地数据卷,容器停止时将数据上传回S3。此外,该工具还支持实时同步,这意味着容器内的任何数据变更都会立即反映...
数据卷可以绕过拷贝系统,在多个容器之间、容器和宿主机之间共享目录或者文件,数据卷绕过了拷贝系统,可以达到本地磁盘 I/O 性能。 本文先通过一个简单的案例向读者展示数据卷的基本用法。 以前面使用的 nginx 镜像...
2. **创建数据卷**:可以通过`docker volume create`命令创建一个新数据卷,或者在启动容器时通过`-v`选项动态创建。例如:`docker run -d -v mydata:/app --name mycontainer myimage`,这将在容器内部的/app目录...
综上所述,Docker数据卷是解决容器数据持久化问题的强大工具。它们不仅提供了一种简单而有效的方式来存储和管理容器数据,而且还可以使得容器化应用更加灵活和可靠。通过掌握数据卷的使用方法,开发者能够构建更加...
- **创建Volume**:使用`docker volume create`命令创建一个新的数据卷。例如,`docker volume create --name www-data`会创建一个名为`www-data`的Volume。 - **查看Volume**:使用`docker volume ls`命令列出所有...
Docker数据卷是容器持久化数据的关键,通过命名卷和挂载卷两种方式,可以根据实际需求灵活管理和存储容器内的数据。命名卷提供了可重用性和跨容器共享的能力,而挂载卷则方便快速地利用宿主机资源。了解并熟练掌握这...
综上所述,`docker_volume-0.1.dev1-py3-none-any.whl`是一个针对Docker容器的Python工具,用于管理和操作Docker数据卷,具有跨平台兼容性和易用性,适用于开发和运维场景。在实际应用中,用户可以使用Python的`pip`...
综上所述,通过 OpenStack Cinder 作为 Docker Volume Provider,可以在 OpenStack 环境中轻松实现容器化的应用程序的数据持久化需求。无论是使用标准驱动还是自定义驱动,都可以充分利用 Cinder 提供的丰富的存储...
这些方法可以帮助你在保持安全性的前提下解决Docker数据卷权限问题。选择哪种方法取决于你的具体需求和安全策略。理想情况下,尽量避免使用`--privileged`,因为它会授予容器过多的权限,而修改SELinux规则则能提供...