欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker容器数据卷

程序员文章站 2022-04-18 23:15:16
...

什么是容器数据卷

这要从docker的理念开始讲起 。docker是将应用和运行的环境打包成容器运行,有时在容器运行时产生的文件是我们需要的,但是随着容器的关闭这些文件会消失。我们将文件持久化。还有另外的一种需求,我们希望容器之间可以共享数据 。为了数据能够保存,我们使用卷。

容器卷能够做什么

容器数据的持久化

容器之间继承和共享数据

添加数据卷的方式

一般我们有两种方式来添加容器卷

(1)直接使用命令来进行添加

语法

docker run -it -v /宿主机目录:/容器内目录 镜像名 /bin/bash

示例

docker容器数据卷

查看容器卷是否挂载成功。

docker inspect 容器ID

输入上述命令后,会出现一串json数据串。其中我们可以找到“Mounts"可以看到挂载的节点

docker容器数据卷

查看容器和数组机之间的数据共享

在宿主机的mycentos01中创建hello.txt文件。进入容器查看centos01里面是否有hello.txt文件。

docker容器数据卷

docker容器数据卷
在数组机中创建文件,则容器所对应的位置会有相应的文件生成。

(2)使用DockerFile添加

在宿主机的根目录下创建mydocker文件夹并在此文件夹下touch一个名称问DockerFile的文件

docker容器数据卷
编写DockerFile

FROM centos
VOLUME ["/dataContainer1","/dataContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash

docker容器数据卷

build成一个新的镜像

docker build -f  /docker/DockerFile -t  命名空间/镜像名  . #最后的点不要忘记

示例
docker容器数据卷

启动容器

docker run -it --name='mycentos' REPOSITORY(或者是镜像ID)

示例

docker容器数据卷
此时在宿主机上输入下列命令,会出现两个容器卷

docker inspect 容器ID

docker容器数据卷

我们今后使用和共享数据的地址为挂载的地址。

什么是docker数据卷容器

上面介绍了docker容器数据卷,它的作用相当于生活中的活动硬盘,那么数据卷容器就相当于把多个活动硬盘再挂载到一个活动硬盘上,实现数据的传递依赖。

docker run -it - -name parent  镜像名(可以填上面通过dockerFile建立的镜像,里面有挂载容器卷)

然后建立两个子容器继承父容器

docker run -it - -name son1 --volumes -from parentContainer 镜像名
docker run -it - -name son2 --volumes -from parent 镜像名

假设我们DockerFile里面定义的容器卷目录为dockerVolume,父容器里面有dockerVolume目录,子容器继承了父容器的dockerVolume,在字容器中的dockerVolume目录作出的修改会同步到父容器的dockerVolume目录上,达到了继承和数据共享的目的。

ume,父容器里面有dockerVolume目录,子容器继承了父容器的dockerVolume,在字容器中的dockerVolume目录作出的修改会同步到父容器的dockerVolume目录上,达到了继承和数据共享的目的。

官网上有一句话描述的是,容器之间配置信息的传递,数据卷的生命周期会一致持续到没有容器使用它为止,换言之,只要有一个容器仍在使用该数据卷,该数据卷一直都可以进行数据共享,通俗地来说,如果此时我们把父容器关闭掉,两个字容器之间依旧可以进行数据共享,而且通过继承子容器生成的新容器,一样可以与子容器进行数据共享。这就是docker容器间的数据传递共享。