1、使用容器卷的原因:Docker容器产生的数据,如果不通过commit生成新的镜像,数据会在容器删除后丢失。为了能持久化保存和共享容器的数据,Docker提出了两种管理数据的方式:数据卷和数据卷容器。

2、数据卷操作

  2.1 增加新数据卷

    docker run -d -v /tmpd/busyboxtest --name busyboxtest busybox

    -v参数会在容器的/tmp/busybox下创建一个新的容器卷

    通过docker inspect命令查看数据卷的位置

    docker inspect busyboxtest | grep volumes
      "/tmp/busyboxtest": "/var/lib/docker/volumes/577784c9e8aa3fba15ebf56ee680b6fea50aafe60bd753b64c3699e461fa3e39/_data"

  2.2 将主机目录挂载为数据卷

    docker run -tid -v /tmp/volumetest:/data:ro --name busyboxtest2 busybox

    将宿主机的/tmp/volumetest以ro的方式挂载在/data下

    

  2.3 创建数据卷容器

    如果需要在容器之间共享一些持续更新的数据,最简单的方式使用数据卷容器

    首先创建一个数据卷容器dbdata并在其中创建一个数据卷挂载到/dbdata
      docker run -it -v /dbdata --name dbdata ubuntu
    然后在其他容器使用--volume-from来挂载dbdata容器中的数据卷
      docker run -it --volume-from dbdata --name db1 ubuntu
      docker run -it --volume-from dbdata --name db2 ubuntu
    此时容器db1和db2挂载同一个数据卷到/dbdata目录,三个容器任何一方写入,其他容器都可以看到
    --volume-from多次指定可以挂载多个数据卷,并且--volume-from参数所挂载数据卷的容器并不需要运行
    如果删除了挂载的容器,数据卷并不会自动删除,如果删除一个数据卷,需要删除最后一个还挂着他的容器使用docker rm -v

  2.4 数据卷备份恢复

  2.4.1 备份:
    备份dbdata数据卷容器内的数据卷
      docker run --volume-from dadata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar.gz /dbdata
    命令解释:使用ubuntu镜像创建一个叫worker的容器,并将本机的当前目录挂载到worker容器的/backup目录。然后使用--volume-from挂载dbdata容器的数据卷,容器启动后将打包/dbdata目录到/backup目录下。同时也存在了本机的当前目录下
  2.4.2 恢复:
    恢复数据到一个容器
    首先创建一个带有数据卷的容器docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
    之后在创建一个新的容器,挂载dbdata2的容器,并使用untar解压备份文件到所挂载的容器即可
    docker run --volume-from dbdata2 -v $(pwd):/backup busybox tar xf /backup/backup.tar.gz

3、容器互联

  首先创建一个数据库容器:
    docker run -d --name db mysql
  创建一个新的web容器,并将它连接到db容器:
    docker run -d -P --name web --link db:db nginx
  此时db容器和web容器建立互联,其中--link db:db是name:alias name是连接容器的名称,alias这个连接的别名
  使用docker ps查看到db和web容器,其中db容器的names列有db和web/db,这表示web容器连接到db容器,允许web容器访问db容器的信息

Docker(七):Docker容器卷管理的更多相关文章

  1. Docker进阶:容器卷、DockerFile、Docker网络原理

    1.Docker镜像 1.1镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和机遇运行环境开发的软件. 包含一个软件的所有内容.蒋所有的应用和环境,直接打包为docker镜像,直 ...

  2. docker守护式容器运行管理

    docker守护式容器适合运行应用程序和服务 以交互方式进入容器  docker run -it centos /bin/bash 以交互方式进入 并设置镜像名称和运行后的主机名称 退出交互式容器并让 ...

  3. docker数据卷管理及网络基础配置

    数据卷 数据卷容器 数据卷迁移数据 端口映射 容器间通信 数据卷的管理 当需要查看容器内应用产生的数据或者把容器内数据备份及多个容器数据共享.有两种方式,数据卷以及数据卷容器. 数据卷 数据卷是一个可 ...

  4. Docker学习笔记之docker volume 容器卷的那些事(一)

    预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...

  5. Docker实践(二):容器的管理(创建、查看、启动、终止、删除)

    docker官方文档地址如下:[https://docs.docker.com/engine/reference/](https://docs.docker.com/engine/reference/ ...

  6. Docker 基础知识 - 使用卷(volume)管理应用程序数据

    卷(volumes)是 Docker 容器生产和使用持久化数据的首选机制.绑定挂载(bind mounts)依赖于主机的目录结构,卷(volumes)完全由 Docker 管理.卷与绑定挂载相比有几个 ...

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

    1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种 ...

  8. 【docker专栏8】使用IDEA远程管理docker镜像及容器服务

    使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员.测试人员),这种情况下图形界面就有 ...

  9. Docker背后的容器管理——Libcontainer深度解析

    Libcontainer 是Docker中用于容器管理的包,它基于Go语言实现,通过管理namespaces.cgroups.capabilities以及文件系统来进行容器控制.你可以使用Libcon ...

随机推荐

  1. TreeSet(一)--排序

    TreeSet(一) 一.TreeSet定义:      与HashSet是基于HashMap实现一样,TreeSet同样是基于TreeMap实现的.            1)TreeSet类概述 ...

  2. strcmp函数

    strcmp函数用于c语言中两个字符串比较(只可以比较字符串,不可以比较数字) 规则 当s1>s2时,返回为正数: 当s1=s2时,返回值为0: 当s1<s2时,返回为负数: 两个字符串自 ...

  3. 组合模式(Composite)

    组合模式(Composite) 组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便,看看关系图: 直接来看代码: [java] view plaincopypublic class Tr ...

  4. PAT乙级--1003

    1003. 我要通过!(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue "答案正确"是 ...

  5. 算法训练 最大的算式 DP

    算法训练 最大的算式 时间限制:1.0s   内存限制:256.0MB     问题描述 题目很简单,给出N个数字,不改变它们的相对位置,在中间加入K个乘号和N-K-1个加号,(括号随便加)使最终结果 ...

  6. vue——props的两种常用方法

    vue--props的两种常用方法 1.实现父-->子的通信 举例如下: 父组件 parent.vue <children :channel="object1"> ...

  7. css走过的坑

    css盒模型 1.内联元素 设置宽高无效.margin左右有效上下无效.padding都有效 会被当做字体所以内联之间有间隙 父级元素要设置font-size:0; 内联元素:a.b.button.e ...

  8. Cesium几个案例介绍

    前言 本文为大家介绍几个Cesium的Demo,通过这几个Demo能够对如何使用Cesium有进一步的了解,并能充分理解Cesium的强大之处和新功能.其他的无需多言,如果还不太了解什么是Cesium ...

  9. 》》初识移动端--rem

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta na ...

  10. 3.python元组与列表

    Python的元组与列表类似,同样可通过索引访问,支持异构,任意嵌套.不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号. 创建元组 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开 ...