文章目录

  • 4. Volumes 数据卷管理
    • 4.1 Volumes 数据卷的优势
    • 4.2 Volumes 数据卷使用
      • 4.2.1.创建并管理数据卷
        • 1. 创建数据卷
        • 2. 查看数据卷
        • 3. 核查数据卷
        • 4. 删除数据卷
      • 4.2.2.启动容器并加载数据卷
        • 1. 查看本机容器和数据卷
        • 2. 确认查看本机Docker文件系统中的容器和数据卷
        • 3. 启动容器并挂载数据卷
        • 4. 再次查看本机容器和数据卷列表
        • 5. 检查容器详情
        • 6. 再次确认查看本机Docker文件系统中的容器和数据卷

4. Volumes 数据卷管理

4.1 Volumes 数据卷的优势


Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)。数据卷可以用来存储Docker应用的数据,也可以用来在Docker容器间进行数据共享。数据卷呈现给Docker容器的形式就是一个目录,支持多个容器间共享,修改也不会影响镜像。使用Docker的数据卷,类似在系统中使用 mount 挂载一个文件系统。操作Docker数据卷,需要理解以下几点:

1)一个数据卷是一个特别指定的目录,该目录利用容器的UFS文件系统可以为容器提供一些稳定的特性或者数据共享。数据卷可以在多个容器之间共享。
2)创建数据卷,只要在docker run命令后面跟上-v参数即可创建一个数据卷,当然也可以跟多个-v参数来创建多个数据卷,当创建好带有数据卷的容器后,就可以在其他容器中通过–volumes-froms参数来挂载该数据卷了,而不管该容器是否运行。也可以在Dockerfile中通过VOLUME指令来增加一个或者多个数据卷。

3)如果有一些数据想在多个容器间共享,或者想在一些临时性的容器中使用该数据,那么最好的方案就是你创建一个数据卷容器,然后从该临时性的容器中挂载该数据卷容器的数据。这样,即使删除了刚开始的第一个数据卷容器或者中间层的数据卷容器,只要有其他容器使用数据卷,数据卷都不会被删除的。

4)不能使用docker export、save、cp等命令来备份数据卷的内容,因为数据卷是存在于镜像之外的。备份方法: 创建一个新容器,挂载数据卷容器,同时挂载一个本地目录,然后把远程数据卷容器的数据卷通过备份命令备份到映射的本地目录里面。如下:

docker run --rm --volumes-from DATA -v $(pwd):/backup busybox tar cvf /backup/backup.tar /data

5)可以把一个本地主机的目录当做数据卷挂载在容器上,同样是在docker run后面跟-v参数,不过-v后面跟的不再是单独的目录了,它是[host-dir]:[container-dir]:[rw|ro]这样格式的,其中host-dir是一个绝对路径的地址,如果host-dir不存在,则docker会创建一个新的数据卷,如果host-dir存在,但是指向的是一个不存在的目录,则docker也会创建该目录,然后使用该目录做数据源。

Docker Volume数据卷可以实现:
-> 绕过“拷贝写”系统,以达到本地磁盘IO的性能,(比如运行一个容器,在容器中对数据卷修改内容,会直接改变宿主机上的数据卷中的内容,所以是本地磁盘IO的性能,而不是先在容器中写一份,最后还要将容器中的修改的内容拷贝出来进行同步。)
-> 绕过“拷贝写”系统,有些文件不需要在docker commit打包进镜像文件。
-> 数据卷可以在容器间共享和重用数据
-> 数据卷可以在宿主和容器间共享数据
-> 数据卷数据改变是直接修改的
-> 数据卷是持续性的,直到没有容器使用它们。即便是初始的数据卷容器或中间层的数据卷容器删除了,只要还有其他的容器使用数据卷,那么里面的数据都不会丢失。

Docker数据持久化:
容器在运行期间产生的数据是不会写在镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据。如果想做到数据持久化,Docker提供数据卷(Data volume)或者数据容器卷来解决问题,另外还可以通过commit提交一个新的镜像来保存产生的数据。

4.2 Volumes 数据卷使用


4.2.1.创建并管理数据卷

1. 创建数据卷

在 Docker 主机终端,通过docker volume create 指令创建一个名为my-vol的数据卷,具体操作指令如下。

sudo docker volume create my-vol
2. 查看数据卷

使用docker volume ls指令查看本地数据卷列表,效果如下图所示。

sudo docker volume ls

3. 核查数据卷

使用docker volume inspect指令查看指定数据卷详情,具体操作指令如下。

sudo docker volume inspect my-vol

4. 删除数据卷

当不需要使用数据卷后,可以使用docker volume rm 指令删除指定名称的数据卷,具体操作指令如下。

sudo docker volume rm my-vol

4.2.2.启动容器并加载数据卷

1. 查看本机容器和数据卷

在Docker主机端分别使用docker ps -a 和docker volume ls 指令查看本地docker机器上存在的容器和数据卷,效果如下图所示。

2. 确认查看本机Docker文件系统中的容器和数据卷

首先在Docker 主机端中将普通用户切换到root用户,然后进入“/var/lib/docker”目录,即docker默认在本机上的文件系统目录,查看信息,效果如下图所示。

3. 启动容器并挂载数据卷

使用docker run指令创建并启动一个容器,同时挂载一个数据卷,具体操作指令如下。

docker run -d -it --name devtest --mount source=myvol,target=/app busybox:latest

也可以使用-v参数挂载数据卷,具体指令如下。

docker run -d -it --name devtest2 -v myvol:/app busybox:latest

4. 再次查看本机容器和数据卷列表

在Docker主机端分别使用docker ps -a 和docker volume ls 指令查看本地docker机器上存在的容器和数据卷,效果如下图所示。

5. 检查容器详情

在Docker 主机端使用docker inspect指令查看容器详情(主要查看数据挂载信息),效果如下图所示。

6. 再次确认查看本机Docker文件系统中的容器和数据卷

首先在Docker 主机端中将普通用户切换到root用户,然后进入“/var/lib/docker”目录,然后分别进入containers容器文件目录和volumes数据卷文件目录查看内容,效果如下图所示。

Volumes 数据卷管理相关推荐

  1. docker之数据卷管理

    目录 1.docker使用 2.优化 在docker之网络访问中,通过启动了nginx服务进行了访问,只展示了nginx的首页信息,如果想访问我们自己的代码如何操作呢,这就需要使用到数据卷的知识了.在 ...

  2. Docker(七)--Docker数据卷管理及插件

    一.Docker 数据卷管理 在实际使用过程中,我们需要把容器和数据进行隔离,因为容器在使用过程中可能随时要进行销毁,但是数据要保留下来,所以我们要做数据的持久化. 为什么要用数据卷 docker分层 ...

  3. Docker----(七)数据卷管理

    Docker数据卷管理 1 Docker数据卷管理 1.1 为什么要用数据卷 1.2 bind mount 1.3 docker managed volume 2 卷插件简介 2.1 nfs的配置 2 ...

  4. docker常用命令 | game2048网页游戏 | nginx镜像 | 数据卷管理 | docker网络管理 | 构建apache镜像 | Dockerfile常用的命令

    DOCKER https://www.docker.com http://www.runoob.com/docker/docker-command-manual.html docker命令大全 镜像用 ...

  5. Docker数据卷管理

    前言 docker数据卷 数据卷是目录或文件,不是块设备. 容器可以读写volume中的数据. volume数据可以持久化保存. docker提供了两种卷: bind mount 是将主机上的目录或文 ...

  6. docker入门实践之数据卷管理

    在实际使用docker过程中,有时需要查看容器内应用产生的数据,或需要把容器内的数据进行备份,甚至是多个容器间需要共享数据,这势必涉及到数据管理,那么docker的数据怎么管理呢? 容器中数据管理主要 ...

  7. 这就是你日日夜夜想要的docker!!!---------Docker常规操作--端口映射、数据卷管理 以及容器互联

    文章目录 一.端口映射 1.-P随机端口 2.映射指定一个端口 3.映射指定多个端口 4.映射到指定端口的指定地址 5.映射到指定端口的任意地址 6.查看端口映射情况 二.数据卷与数据卷容器 1.挂载 ...

  8. Docker——使用docker工具管理软件/组件的运行,镜像、容器、数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境

    Docker--使用docker工具管理软件/组件的运行,镜像.容器.数据卷的基本概念,常用指令,使用docker搭建Java微服务运行环境 一.docker的安装和卸载 1.卸载 2.安装 3. 导 ...

  9. Docker容器数据卷讲解

    概述 为什么Docker需要容器数据卷技术:如果没有数据卷技术,比如一个由mysql镜像创建运行的容器,产生的数据就会保存在容器中,数据的生命周期与容器的生命周期一致,如果删除了该容器,相应的数据也会 ...

最新文章

  1. python3.8.2汉化包-Python3.8.2中文版 32/64位 官方最新版
  2. 对称密码获取(OJ)
  3. Excel2010中VLOOKUP函数跨工作簿使用实例:
  4. iphone屏幕镜像连电视_手机股票行情:在电视上投射或镜像安卓手机屏幕的三个简单步骤...
  5. 洛谷——P1603 斯诺登的密码
  6. 学的php毫无兴趣,培训班学PHP,感觉兴趣越来越低,哎,真的很迷茫了!
  7. 防火墙contos6.8操作手册
  8. ideajava目录显示类成员_面试:C++不可继承类
  9. 针对文字加密的简单 JS 加密算法 --进制乱序法改良版
  10. webpack 打包第三方库_webpack提取第三方库的正确姿势
  11. tcp 压力 测试 软件,强大的TcpServer压力测试工具及源码(附突破连接限制的方法和工具)...
  12. 【数学建模】2017年B题
  13. python与排版设计欣赏_有哪些排版惊艳的建筑作品集?
  14. 关键时刻救一命:旧手机改造求生工具
  15. C#控制台程序套壳打开EXCEL并强制启用宏
  16. VoIP的落地通信模型和要考虑几个大的方面问题及基本概念和交互流程整理
  17. 关于使用Kmeans函数RuntimeWarning: Explicit initial center position passed: performing only one init in KMe
  18. 数据库之视图和触发器
  19. 经验总结:青春豆的治疗方法
  20. 网线、WiFi、路由器的介绍选择

热门文章

  1. rfc3550-rtp:一种实时应用的传输协议
  2. IDM高速下载器 快来白嫖~
  3. python随机生成邮箱、自我介绍、地址、时间等
  4. k8s数据持久化之statefulset的数据持久化,并自动创建PV与PVC
  5. 指数型基金购买技巧汇总(程序猿买基金必备——未完待续)
  6. JUC(十)-线程池-ThreadPoolExecutor分析
  7. 1051: 电报加密
  8. java如何实现发布微博的功能_使用java调用新浪微博开发api进行通信
  9. Diagnostic Viewer 显示空白
  10. 渗透学习日记day5