Docker数据卷

关于docker数据卷的理解,大概就是说,在某个容器内工作时,产生的数据或者文件之类的,当退出该容器时,这些数据和文件就会随之消失,这样的影响是,数据的使用范围被限制在容器内(这样也太没意思了),于是出来数据卷这个概念,直白理解就是在容器和宿主机之间的数据共享

以下记录学习过程中的笔记

添加数据卷的方式有两种,第一种是直接通过命令行挂载,第二种是通过dockerFile添加

记录的是通过命令行挂载:命令行如下

docker run -it -v  /宿主机绝对路径目录:/容器内目录  镜像名

举个栗子:

docker run -it -v /myDataVolume:/dataVolumeContainer centos

上面这条命令的意思是,将主机根目录下的myDataVolume目录和容器根目录下的dataVolumeContainer这个目录联系起来,容器是指在运行完centos这个镜像后产生的容器。

-v 参数会自动创建相关的目录。

 

运行完上述的命令后,可以去到宿主机和容器内分别查看是否已经产生了相应的目录(无意外的话会有的)

那么,就可以在宿主机/myDataVolume 目录和容器的 /dataVolumeContainer目录间进行数据的共享操作了。

比如在/myDataVolume目录下新建一个txt并写入相关的内容,在容器的/dataVolumeContainer目录下也会看到有相关的文件,同理,在容器创建的文件也可以在宿主机内看到

 

这是因为此时默认的是容器对共享文件有读写的操作权限,可以通过 一下命令验证

docker inspect container_id(对应的容器id)

比如下:

当然,也可以限制容器内的操作权限为只读,命令如下:

docker run -it -v  /宿主机绝对路径目录:/容器内目录:ro  镜像名

ro是read only的缩写,这样一来就是,在容器内对共享的文件只能读,不能写,docker inspect container_id查看

PS:在主机删除共享的数据卷时使用了 rm -rf myDataVolume 来删除,但是,不成功,后来发现要先退出container对该共享数据卷的操作!

原文地址:https://www.cnblogs.com/Guhongying/p/10894896.html