docker 数据卷和数据卷容器

Docker 数据管理:
在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行
数据共享,这必然涉及容器的数据管理操作

容器中的管理数据主要有两种方式:
数据卷 Data Volumes 容器内数据直接映射到本地主机环境;
数据卷容器(Data Volume Containers 使用特定容器维护数据卷


当然还有最原始的copy方式,这个也是管理数据的方式,但是基本不会用到;

1、Docker 宿主机和容器之间文件拷贝

  • 宿主机文件 copy to 容器内
    docker cp 需要拷贝的文件或者目录 容器名称:容器目录
    实例:
    1、在宿主机中新建一个myFile目录里面有一个aaa.txt 的文件在这里插入图片描述
    2、容器copy 宿主机的文件
    在这里插入图片描述

2、数据卷

数据卷(Data Volumes)
数据卷是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器,
它可以提供很多有用的特性:

1.数据卷 可以在容器之间共享和重用
2.对数据卷的修改会立马生效
3.对数据卷的更新,不会影响镜像
4.数据卷 默认会一直存在,即使容器被删除

数据卷相关操作

1、创建数据卷

  docker volume create     名字

此时,数据卷默认会放到/var/lib/docker/volumes路径下,会发现所新建的数据卷位置,查看命令如下:
## 参数可以为数字“1”,字母L:大小写均可,但效果不一样
ls -1 /var/lib/docker/volumes

在这里插入图片描述
在 _data 下创建一个.txt 文件 ,加入内容 mysql version 1
在这里插入图片描述

2、查看所有的数据卷

  docker volume ls

在这里插入图片描述
3、查看指定数据卷的详细信息(显示一个JSON格式的数据)

   docker volume inspect my-vol 

在这里插入图片描述
4、删除一个volume

   docker volume rm my-vol

在这里插入图片描述

注1:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷,
并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷可能会占据很多空间,
所以要及时删除

5、启动一个挂载数据卷的容器
挂载数据卷,最好是通过run而非create/start创建启动容器
create/start命令创建启动容器后,再挂载数据卷相当麻烦,要修改很多配置文件,但并非不可以

这里有两种方式挂载:

1 使用 docker volume create 创建数据卷,进行挂载

docker run -d \
       -it \
       --name mycentos01\
       --mount source=my-vol,target=/webapp \
       centos:7

在这里插入图片描述
修改 在容器中 mysql.txt 文件类容,宿主机里的数据也会发生改变

在这里插入图片描述
宿主机中的 mysql.txt
在这里插入图片描述

2.不使用命令创建数据卷进行挂载

  1. 在宿主机中创建 目录 myhyf/data/redis.txt
    在这里插入图片描述

2.输入命令

 docker run -d \
       -it \
       --name mycentos02\
       --mount type=bind,source=/myhyf/data,target=/root/webapp02 \
       centos:7    

ok
在这里插入图片描述

资料:

注1:linux命令结尾加斜杠有什么用
加了“\”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行输入,直到读到结束符,如回车

 注2:source=my-vol,target=/webapp
      my-vol为要挂载的数据卷,如果数据卷不存在,docker会自动创建
      /webapp为容器上目录,如果目录不存在, Docke会自动创建

 注3:mount选项高级用法
      --mount选项的type参数支持三种类型的数据卷
      --mount标志:由多个名值对组成,逗号分隔,每个键值由 <key> = <value> 元组组成 
      1.type=volume普通数据卷(默认即这种类型),映射到主机/var/lib/docker/volumes路径下;
        --mount type=volume,source=my-vol,target=/webapp
        注:这是type的默认值
      2.bind:绑定数据卷,映射到主机指定路径下;
        --mount type=bind,source=/webapp,destination=/webapp2
      3.tmpfs :临时数据卷,只存在于内存中
        docker run -d \
          -it \
          --name tmptest \
          --mount type=tmpfs,destination=/app \
          nginx:latest

3、数据卷容器

数据卷容器:
如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。
数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载

数据卷容器相关操作:

1.新建数据卷容器

在这里插入图片描述
进入容器 在db_data目录下创建一个tomcat.txt,文件里的数据为 tomcat 1
在这里插入图片描述
注:-v 后面接的共享数据真实存放路径

2.用容器db1、db2测试数据卷容器是否可用

创建db1

docker run -di --name db1 --volumes-from db_data centos:7

创建db2

docker run -di --name db2 --volumes-from db_data centos:7

创建成功
在这里插入图片描述

效果:

db1 容器中
在这里插入图片描述
在db1容器 修改tmcat.txt 文件中的值 ,取db2容器中查看–
在这里插入图片描述

db2容器
在这里插入图片描述

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值