docker数据卷

Posted 冯君华

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker数据卷相关的知识,希望对你有一定的参考价值。


1
docker数据卷之docker volume 2 3 docker中数据卷其实就类似于虚拟机的虚拟磁盘,在虚拟机的虚拟磁盘的使用过程中,我们可以将本地的磁盘文件或目录挂载 4 到这个虚拟磁盘上,从而完成对本机数据的读写。 5 6 7 docker数据卷的创建可以在创建这个docker镜像的时候在dockerfile中直接使用volume参数指定,也可以在容器启动生成的时候 8 使用参数-v来生成指定。 9 10 #1.在使用dockerfile创建docker镜像的时候使用volume参数直接指定,这种方法可以同时一次指定一个或多个docker数据卷 11 12 指定一个数据卷: 13 VOLUME /opt/data 14 15 同时指定多个数据卷: 16 VOLUME /opt/data001 17 VOLUME /opt/data001 18 或者是: 19 VOLUME ["/opt/data001","/opt/data002"] 20 注:一般我们都直接使用第二种方法,因为这样的的话生成的镜像比较小,而且dockerfile读起来也比较美观。 21 22 #2.在容器启动运行的时候使用-v参数直接生成指定: 23 如启动一个容器,并给这个容器创建一个数据卷/opt/data 24 docker run -it -v /opt/data --name centos101 centos 25 此时整个容器就自动生成了一个名为/opt/data的数据卷目录。 26 27 同时生成多个数据卷: 28 docker run -it -v /opt/data001 -v /opt/data002 --name centos101 centos 29 这样就同时生成了多个数据卷。 30 31 等我们将带有数据卷的容器运行起来以后,会在/var/lib/docker/volumes目录下生成跟这个数据卷相关的一个目录文件: 32 也就是通过这个文件目录的存在,我们在后面使用数据卷容器的时候,即时这个数据卷容器已经停止了,这个数据卷容器 33 也可以继续被挂载使用。 34 35 另外我们可以通过,docker inspect命令来查看数据卷所对应的具体容器名: 36 docker inspect [容器名] 37 然后我们就可以在/var/lib/docker/volumes目录下找到相应的数据卷了。

二.映射或挂载宿主机文件或目录到docker数据卷:

映射或挂载宿主机目录或文件到容器数据卷

我们可以直接映射或者挂载宿主机目录或文件到容器数据卷,这样就能够让所有的容器共享宿主机数据,并且只要改变宿
主机的数据就能影响到容器内数据卷中的数据。
我们在启动容器的时候,可以使用-v参数来执行宿主机目录或文件的挂载或映射。

命令格式如下:
docker run -it -v 宿主机目录或文件:容器对应的目录或文件  镜像名
从命令格式上来看,宿主机的目录或文件要写在前面,而容器的目录或文件要写在后面。

默认情况下,挂载的目录或文件具有可读写权限,但也可以根据自己的需求,给挂载的目录或文件指定相应的权限,
例如可以根据自己公司的项目需求,将挂载的目录或者文件设置为只读权限,只需在后面指定即可,一般我们都使用默认
的读写权限即可。

#1.映射或挂载宿主机文件到容器上
首先我们需要保证宿主机上有/opt/soft/logs这个文件,而容器内有没有这个文件都可以,如果没有的话,会自动创建
一个,如果有的话,将会使宿主机内的文件覆盖掉容器内的文件。
可以读写权限:
docker run -it -v /opt/soft/logs:/opt/soft/logs  --name centos100 centos /bin/bash
只读权限:
docker run -it -v /opt/soft/logs:/opt/soft/logs:ro  --name centos100 centos /bin/bash

#2.映射或挂载宿主机目录到容器上
首先我们需要保证宿主机上有/opt/soft/application这个目录,而容器内有没有这个目录都可以,如果没有的话,
会自动创建这个目录,如果有的话,将会使宿主机内的目录覆盖掉容器内的目录文件。
可以读写权限:
docker run -it -v /opt/soft/application:/opt/soft/application --name centos100 centos /bin/bash
只读权限:
docker run -it -v /opt/soft/application:/opt/soft/application:ro  --name centos100 centos /bin/bash

#3.当然我们也可以映射多个文件或目录到容器上

如果我们要想映射多个文件或目录到容器上,只需要使用 -v参数来多次指定即可。

如同时映射宿主机文件:/opt/soft/logs和宿主机目录:/opt/soft/application到容器中:
docker run -it -v /opt/soft/logs:/opt/soft/logs -v /opt/soft/application:/opt/soft/application --name centos100 centos /bin/bash

如同时映射宿主机文件:/opt/soft/logs和宿主机目录:/opt/soft/application到容器,并指定只读权限:
docker run -it -v /opt/soft/logs:/opt/soft/logs:ro -v /opt/soft/application:/opt/soft/application:ror --name centos100 centos /bin/bash

 

以上是关于docker数据卷的主要内容,如果未能解决你的问题,请参考以下文章

Docker----数据卷安全

Docker 数据卷

Docker 基本操作 数据卷 -- docker 数据卷基本操作挂载数据卷

docker-数据卷

Docker之七:Docker数据卷管理

运维实战 容器部分 Docker数据卷