docker容器数据卷⑥(对于javaee开发人员)

docker容器数据卷


在这里插入图片描述

1.是什么

类似于redis中的rdb和aof文件。

2.能干嘛

1.容器的持久化
2.容器间继承+共享数据

3.数据卷

在这里插入图片描述

①直接命令添加:

命令:

docker run -it -v /绝对路径:/容器中的目录 镜像名

查看数据卷是否挂载成功

docker inspect 容器ID

在这里插入图片描述

容器与宿主机之间数据共享
在这里插入图片描述

容器停止退出后, 主机修改后数据是否同步
在这里插入图片描述

②Dockerfile添加

在这里插入图片描述
可在Dockerfile中使用VOULME指令添加一个或多个数据卷

VOLUME["/dataVolumeContainer","/dataVolumeContainer2","/dataVolumeContainer3"]

说明:

出于可移植和分享的考虑,用-v 主机目录:容器目录这种方法不能够直接在Dockerfile中实现。

由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录。

File构建

在这里插入图片描述

# volume test

FROM centos

VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]

CMD echo "finished,--------success1"

CMD /bin/bash

build后生成镜像

在这里插入图片描述

run容器

在这里插入图片描述

查看对应主机目录地址

在这里插入图片描述

在这里插入图片描述

主机默认地址

在这里插入图片描述

③备注

Docker挂载主机目录Docker访问出现cannot open directory .: Permission denied

解决办法:在挂载目录后多加一个–privileged=true参数即可

4.数据卷容器

在这里插入图片描述

①是什么

命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器

②总体介绍

在这里插入图片描述

③容器共享

在这里插入图片描述

先启动一个父容器
在这里插入图片描述

docker2/docker3继承docker1

docker run -it --name dc02 --volumes-from dc01 zzyy/centos

在这里插入图片描述

再回到dc1看到dc2/dc3各自添加的都能共享了
在这里插入图片描述

删除dc1,看dc2和dc3可否访问

在这里插入图片描述

删除dc2,看dc3能否访问
在这里插入图片描述

在这里插入图片描述

新建dc4再删除dc3
在这里插入图片描述

结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止

发布了97 篇原创文章 · 获赞 12 · 访问量 5394

猜你喜欢

转载自blog.csdn.net/qq_43141726/article/details/104253138