Docker存储卷(volume)
volume存储卷 : 是容器上的一个或多个"目录",此类目录可绕过联合文件系统,与宿主机上的某目录"绑定(关联)"
docker中分为2种类型的卷:
1.Bind mount volume (绑定挂载卷:在宿主机跟容器内部创建特定路径,让2个已知路径建立关联关系)
2.Docker-managed volume(docker管理的卷:需在容器内部制定容器挂载目录,被绑定的宿主机目录(这个 宿主机目录是docker daemon自助创建的以docker id号为结尾的 ,是docker内部自己来维护的))
在容器中使用volume 为docker run命令使用 -V 选项即可使用Volume
1.docker -managed volume
#docker run -it --name bbox1 -v /data busybox
#docker inspect -f {{.Mounts}} bbox1
查看bbox1容器的卷,卷标识符及挂载的主机目录
2.Bind-Mount volume
#docker run -it -v HOSTDIR:VOLUMEDIR --name bbox2 busybox
(HOSTDIR是宿主机目录,VOLUMEDIR是容器中的目录)
#docker inspect -f {{.Mount}} bbox2
例子1:
docker inspect b1
找到Mounts这一块儿查看当前宿主机关联路径
在容器里面做个测试,进入data目录,然后创建一个测试文件
进入宿主机然后找到关联目录进去
例子2(绑定挂载卷):
docker inspect b2
查看Mounts这一块儿查看当前宿主机关联路径
进入这个/data/volume/b1 目录
退出去,因为加了-rm参数,容器停止就自动删除,但是删除容器之后之前运行的容器与宿主机关联的目录依旧存在(体现了volume的持久挂载功能)
建立共享存储卷
建立容器b3 ,设关联宿主机目录为/data/volume/b2(跟上述容器b2关联宿主机一样)
进入关联的宿主机目录
进入容器b2查看目录,由此可见多容器可共享一个卷
docker inspect -f {{.Mount}} b2
-f (过滤出.mounts里面想要的内容)截图如下
复制使用其他容器的卷,为docker 润命令使用-- volumes-from选项
#docker run -it --name bbox1 -v /docker/volumes/v1:/data busybox
#docker run -it --name bbox2 --volumes-from bbox1 buxybox
例子3:
容器infracon
复制容器infracon使用的卷
查看到infracon的ip地址为
关联的相应目录如图:
ngixn1的相应目录为:
因为是复制使用infracon容器,所以nginx1的关联目录跟infracon是一样的
来源:CSDN
作者:丢了鱼的海绵宝宝
链接:https://blog.csdn.net/Love_yy123/article/details/104574996