这是我参与8月更文挑战的第12天,活动详情查看:8月更文挑战
微信公众号搜索 程序媛小庄 人生苦短 一起学Python
前言
在前面的文章中通过-v参数介绍了一下docker数据卷的简单使用,但是并没有详细展开,本文就针对docker数据卷的具体使用进行详细的介绍,XDM还犹豫什么?冲鸭!!!
数据卷的作用和特点
用来实现宿主机与容器之间数据共享的一种机制。
数据卷还可以在容器之间共享和重用,具体来说就是当容器中有需要进行持久化的数据时,可以首先使用自动数据卷的方式,将容器中的数据持久化出来,当再次启动相同的容器时只需要使用自定义数据卷进行指定数据卷就可以读取相同的数据了。这就是容器之间的共享和重用。
另外对数据卷进行修改时,会立即影响到对应的容器。如果想要控制宿主机改变容器发生改变,但是容器改变宿主机不发生改变的话,可以通过ro参数进行控制,表示容器内不能进行写操作。
docker run -d -p 8080:8080 --name nginx01 -v /root/apps:/usr/local/apps:ro nginx
还需要注意的是,对数据卷的操作不会影响到镜像,并且如果把容器删掉的话,数据卷不会受到影响。
数据卷操作
自定义数据卷目录
在启动容器时,数据卷的参数是-v,具体命令为docker run -d -p 8080:8080 --name tomcat01 -v 宿主机目录:容器内目录 tomcat:latest。注意宿主机目录必须是绝对路径,使用该种方式如果容器内部的路径有数据,这些数据会被宿主机上对应的数据覆盖。
docker run -d -p 8080:8080 --name tomcat01 -v /root/apps:/usr/local/webapps tomcat:latest
# 如果宿主机目录中没有任何文件或数据那么容器内对应的目录中的数据也会被清空
自动创建数据卷
宿主机的目录可以不指定,随便任意的名称,该名称就是数据卷的别名,别名所对应的目录在宿主机中并不存在,docker就会在宿主机上自动为aa构建一个路径,并且该目录是空的,使用这种方式有一个好处就是,因为宿主机上的目录是空的,就会将容器中对应的目录下的文件全部拷贝出来放在宿主机的目录上。
docker run -d -p 8080:8080 --name tomcat01 -v aa:/usr/local/webapps tomcat:latest
docker volumes ls :查看有哪些数据卷
docker volume inspect 卷名:查看数据卷的详细信息,包括数据卷的位置。就不需要find命令了
docker volume create 卷名:创建数据卷
docker run -v a(数据卷名称) ......:当数据卷名字对应的数据卷存在时指定数据卷docker就不会自动创建数据卷了,并且会把容器内的数据复制到数据卷。
docker volume prune:删除没有使用的数据卷。
docker volume rm 数据卷名:删除指定的数据卷。
结语
文章首发于微信公众号程序媛小庄,同步于掘金。
码字不易,转载请说明出处,走过路过的小伙伴们伸出可爱的小指头点个赞再走吧(╹▽╹)