Docker之数据卷(Data Volumes)和数据卷容器(Data Volume Containers )

容器中的管理数据主要有两种方式

1.数据卷 Data Volumes 容器内数据直接映射到本地主机环境;

2.数据卷容器(Data Volume Containers 使用特定容器维护数据卷

 注:数据卷容器和数据卷的概念是差不多的

数据卷是一个可供一个或多个容器使用的特殊目录(文件夹),但它是有局限性的,比如说把容器拷贝到其他电脑上是不会有数据的,因为数据都在数据卷里面,如果要有数据,还要在电脑上在创建一个数据卷重新输入数据(如果容器只在本机使用,建议使用数据卷)

一  数据卷(Data Volumes)

数据卷是一个可供一个或多个容器使用的特殊目录(文件夹), 它将主机操作系统目录直接映射进容器

它可以提供很多有用的特性:

1.数据卷 可以在容器之间共享和重用

2.对数据卷的修改会立马生效

3.对数据卷的更新,不会影响镜像

4.数据卷 默认会一直存在,即使容器被删除

二 数据卷相关操作

1.宿主机上先创建数据卷,再启动容器

docker volume create my-vol

注1: my-vol是数据卷的名称

注2: 创建好的据卷默认会放到/var/lib/docker/volumes路径下,会发现所新建的数据卷位置,查看命令如下:

cd /var/lib/docker/volumes

效果图 :

2.查看所有的数据

 docker volume ls

 效果图:

 3.查看指定数据卷的详细信息(显示一个JSON格式的数据)

  docker volume inspect my-vol 

效果图:

4.删除数据卷

  docker volume rm my-vol

 效果图:

 

 用 docker vloume ls 查询一下,如果没有数据卷了,就说明删除成功了

注1:rm是remove的缩写

注2:数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动删除数据卷

 并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷可能会占据很多空间, 所以要及时删除

5.创建一个挂载数据卷的容器

挂载的意思是临时会挂载身上,可拆卸的 

比如一个人(容器)背了一个包(数据卷) 

如果容器要使用数据卷,必须在创建容器的时候挂载数据卷 

docker run -itd\
    --name tomcat01 \
    --mount source=my-vol,target=/webapp \
    centos:latest

注1:

 \ 是换行的意思 (也可以不打 \ 但是代码会不美观)

docker run -itd --name tomcat01 --mount source=my-vol,target=/webapp centos:latest

run的意思是创建并且运行并且进入的到容器里面去 

it:是两个参数,-i:interactive容器具有交互功能,-t:容器将提供伪终端

在-it 后面加了d是让容器后台运行的意思 

-- name 是给容器取个名字叫 tomcat01

--mount source=my-vol 挂载命令 ,表示容器可以使用数据卷

target=/webapp是挂载容器的这个路径

centos:latest是即镜像名字:版本(或镜像ID),将使用指定镜像创建容器。另外,Docker会检查本地是否存在指定的镜像
 

三 数据卷容器

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

四 数据卷容器的相关操作

1.新建数据卷容器

docker run -it -d --name db_data -v /db_data centos

 注:通过 -v的指令来指定这个文件夹(db_data)叫数据卷

效果图:

 通过 dockers ps 查询 数据卷容器 已经创建成功了

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

docker run -it -d --name db1 --volumes-from db_data centos docker exec -it db1 bash cd db_data

注:通过--volumes-from将db_data里面的数据卷挂载到当前容器

3.进入数据卷容器

docker exec -it db_data /bin/bash

效果图:

 在通过cd db_data进入到数据卷里面

同时在重新打开一个窗口

4.进入到db1这个容器里面

效果图:

 在通过cd db_data进入到数据卷里面

随后在容器db1里面创建一个abc.txt文件

使用 touch  来创建

效果图:

 

然后在到db_data里面查看发现也有了abc.txt

 注:db_data这个数据卷容器不能随便关,如果关了,其他挂载了db_data里面数据卷的容器就会用不了

谢谢阅读

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值