docker数据卷应用场景

docker数据卷应用场景

  • 在多个容器之间共享数据,多个容器可以同时以只读或者读写的方式挂载统一个数据卷,从而共享数据卷中的数据
  • 当宿主机不能保证一定存在某一个目录或一些固定的文件路径时,使用数据卷可以规避这种限制带来的问题
  • 当想把容器中的数据存储在宿主机之外的地方时,比如远程主机上和云存储上
  • 当你需要把容器数据在不同宿主机之间备份、恢复或迁移时,数据卷是很好的选择

数据覆盖问题

  • 如果挂载一个空的数据卷到容器中的一个非空目录中,那么这个目录下的文件会被复制到数据卷中
  • 如果挂载一个非空的数据卷到容器中的一个目录中,那么容器中的目录会显示数据卷中的数据。如果原来容器中的目录有数据,那么原始数据会被隐藏掉

这两个规则都非常重要,灵活利用第一个规则可以帮助我们初始化数据卷中的内容。掌握第二个规则可以保证挂载数据卷后的数据总是你期望的结果。

创建一个数据卷,然后将其挂载

$ docker volume create my-vol
$ docker run -d  -p 80:80 -name webserver      # -v my-vol:/webapp
    --mount source=my-vol, target=/webapp     nginx:latest

使用mount挂载数据卷

除了使用--volume(-v)挂载数据卷,现在docker提供了更强大的--mount选项来管理数据卷。mount选项可以通过都好分隔的多个键值对一次提供多个配置项,因此mount选项可以提供比volume选项更详细的配置:

  • type: 指定挂载方式,这里我们用到是volume, 其实还可以是bind和tmpfs
  • volume-dirver 指定挂载数据卷的驱动程序,默认是local
  • source 指定挂载的源,对于一个命名的数据卷,治理应该指定这个数据卷的名称,在使用时可以写source, 也可以简写为src
  • destination 指定挂载的数据在容器中的路径。在使用时可以写destination,也可以简写为dst和target
  • readonly 指定挂载的数据为只读
  • volume-opt 可以指定多次,用来提高更多的mount相关的配置

使用 volume driver把数据存储到其它地方

除了默认的把数据卷中的数据存储在宿主机,docker还允许我们通过指定volume driver的方式把数据卷中的数据存储在其它地方,比如Azru Storage 或 AWS 的S3。

简单起见,我们接下来的demo演示如何通过演示如何通过vieux/sshfs驱动把数据卷的存储在其它的主机上。

docker默认时不安装vieux/sshfs插件的,我们可以通过下面的命令进行安装

$ docker plugin install --grant-permissions vieux/sshfs

然后通过vieux/sshfs创建数据卷,并指定远程主机的登陆用户名,密码和数据存放目录

$ docker volume create --driver vieux/sshfs     -o [email protected]:/home/nick/sshvolume     -o password=yourpassword     mysshvolume

注意,请确保你指定的远程主机上的挂载点目录是存在的(demo中是/home/nik/sshvolume), 否则在容器启动时会报错。

最后,在启动容器时指定挂载这个数据卷

$ docker run -d --name sshfs     --mount type=volume,volume-driver=vieux/sshfs, source=mysshvolume, targe=myworld     ubuntu /bin/bash

挂载主机目录

$ docker run -d -p 80:80 --name webserver     --mount type=bind,src=/data/docker,dst=/usr/share/nginx/html     nginx

原文地址:http://blog.51cto.com/idweb/2322087

时间: 2024-10-08 15:29:59

docker数据卷应用场景的相关文章

Docker学习笔记之docker数据卷

Docker数据卷数据卷是经过特殊设计的目录,可用绕过联合文件系统(UFS),为一个或多个容器提供访问 数据卷的特点:数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中数据卷可以在容器之间共享和重用可以对数据卷里的内容直接进行修改数据卷的变化不会影响镜像的更新卷会一直存在,即使挂载数据卷的容器已经被删除 为容器添加数据卷:docker run -v ~/container_data:/data -it centos /bin/bash:contai

Docker 数据卷,数据卷容器详细介绍

Docker 数据卷,数据卷容器详细介绍 引子 有些时候,我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷数据卷容器 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性: - 数据卷可以在容器之间共享和重用 - 对数据卷的修改会立马生效 - 对数据卷的更新,不会影响镜像 - 卷会一直存在,直到没有容器使用 #(类似linux下的挂载(mount

docker数据卷备份恢复以及配置桥接网络

笔记内容:docker数据卷备份恢复以及网络相关笔记日期:2018-02-06 25.9 数据卷备份恢复 25.10 docker网络模式 25.11 opration not permitted错误 25.12 配置桥接网络 25.9 数据卷备份恢复 备份: 如果数据卷容器的共享目录已经挂载到了本地宿主机的磁盘上,那么就无需进行数据卷备份.没有进行挂载到本地,而是作为共享目录的数据卷容器,就得定期将数据卷进行一个备份,不然如果数据卷被删除的话,数据也会丢失. 假设数据卷容器共享的目录是data

4.docker数据卷管理

生产过程中使用docker往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,因此就需要数据卷来做数据持久化 *数据卷:容器内数据直接映射到本地主机环境 数据卷的特性: 1)可以在容器之间共享和重用,容器间传递数据变得高效方便 2)对数据卷内数据的修改会立马生效,无论是容器内操作还是本地操作 3)对数据卷的更新不会影响镜像,解耦了应用和数据 4)卷会一直存在,直到没有容器使用,可以安全地卸载它 创建数据卷 docker run -it --name web -v ~/webapp:/w

Docker 数据卷与容器互联(3)

title: Docker 数据卷与容器互联(3) date: 2018-12-15 14:50:42 tags: Docker categories: Docker copyright: true --- Docker是基于Go语言实现的开源容器项目,Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口,Docker诞生于2013年年初,最初发起者是dotCloud公司.

Docker学习第三天(Docker数据卷管理)

1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种不同的方式将数据从宿主机挂载到容器中: 1.volumes:Docker管理宿主机文件系统的一部分(默认文件位置:/var/lib/docker/volumes) 常用 由上图可知我们到了 /var/lib/docker/volumes 目录下有的文件名很长这时匿名 二有的则是我们创建时制定的 2.

Docker 数据卷

想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(即镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏.当删除Docker容器,并通过该镜像重新启动时,之前的更改将会丢失.在Docker中,只读层及在顶部的读写层

docker数据卷

要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上(即镜像栈顶部)添加一个读写层.如果运行中的容器修改了现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中该文件的副本所隐藏.当删除Docker容器,并通过该镜像重新启动时,之前的更改将会丢失.在Docker中,只读层及在顶部的读写层的

Docker学习笔记(8-3)Docker - 数据卷的备份和还原

学习目标: 备份数据卷 还原数据卷 docker run --volumes-from cid -v ${pwd}:/backup ubuntu tar cvf /backup/backup.tar docker restart dvt5 docker attach dvt5 exit # 通过容器备份数据卷容器中的数据卷 docker run --volumes-from dvt5 -v ~/backup:/backup --name dvt10 ubuntu tar cvf /backup/