docker数据管理---数据卷,数据卷容器

在Docker中,数据卷(data volumes)和数据卷容器(data volume containers)是用于在容器之间共享和持久化数据的两种不同的机制。

一、数据卷

数据卷是一个特殊的目录或目录,可以绕过容器文件系统的常规层,直接在主机的文件系统上进行管理。数据卷可以在容器之间共享,并且可以持久存在,即使容器被删除,数据卷仍然存在。数据卷可以用于存储应用程序的数据、配置文件或其他需要在容器之间传递和持久化的内容。数据卷可以由Docker主机或其他容器创建和管理,而且可以在容器的生命周期中被挂载和卸载。

使用 -v 选项指定路径,格式 : 

docker run -it -v 主机目录:容器目录

下面使用training/webapp镜像创建一个web容器,应创建一个数据卷挂载到容器的/opt/webapp目录:

1.先拉取镜像

docker pull nginx:vl

 2.运行docker并挂载

默认挂载的权限是rw 

只读的话/web:/usr/local/nginx/html:ro

[root@master ~]# docker run -d -P --name web -v /web:/usr/local/nginx/html nginx:v1 /bin/bash
e18ba9b88b3cccd9c8fd8c06bc4e7e4ececaf995dbd189ee62d8b13d360b167b

3.进入web容器,写一个测试页面

[root@master ~]# docker exec -it web /bin/bash
root@231750af858b:/# ls
bin   dev		   docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc			 lib   media  opt  root  sbin  sys  usr
root@231750af858b:/# echo "test" >/usr/local/nginx/html/index.html

 4.在宿主机/web目录查看

docker数据管理---数据卷,数据卷容器_第1张图片

/web目录不用事先创建 。删除web容器宿主机/web还在

 二、数据卷容器

数据卷容器是专门用于创建和管理数据卷的容器。数据卷容器本身不运行应用程序,而是用作数据卷的持久化存储和共享点。首先,你可以创建一个数据卷容器并将其挂载到主机或其他容器中。然后,其他容器可以通过挂载相同的数据卷容器来共享数据。数据卷容器提供了一个中心化的位置来管理和维护数据卷,使得容器之间的数据共享更加方便和可控。

1.创建一个数据卷容器dbdata,并在其中创建数据卷挂载到/dbdata;

docker run -it -v /dbdata --name dbdata ubuntu
 没有做关联挂载,在宿主机上就没有,做了关联挂载在宿主机上才存在对应目录

docker run -it -v /db:/dbdata --name dbdata ubuntu
                  做了关联挂载

其他容器中使用--volumes-from来挂载dbdata容器中的数据卷

2.创建db1和db2两个容器,并从dbdata容器挂载数据卷

docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu

db1和db2中都会有/dadata 

 3.在db2的/dbdata下创建一个测试文件

docker数据管理---数据卷,数据卷容器_第2张图片

 dbdata中也会有

 4.如果删除挂载内容的容器(dbdata,db1,db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须再删除最后一个还挂载着它的容器是使用docker rm -v命令来指定同时删除关联的容器

①首先删除dbdata和db1

[root@master ~]# docker rm -f dbdata db1
dbdata
db1

 删除列dbdata和db1,db3中的数据卷还在

②删除数据卷

[root@master ~]# docker rm -f -v db2
db2

总结一下两者的区别:
- 数据卷是一个特殊的目录,直接在主机的文件系统上进行管理,可以在容器之间共享和持久存在。
- 数据卷容器是用于创建和管理数据卷的容器,本身不运行应用程序,而是提供一个中心化的位置来管理和维护数据卷,使得容器之间的数据共享更加方便和可控。

你可能感兴趣的:(docker,运维)