容器数据卷

首先我们思考一个场景,你有一个容器,里面装得是mysql,然后你一不小心将这个容器删除了。那么容器中得数据还在吗?

毫无疑问,这数据就没了。而为了解决这个问题。将数据持久化保存,我们可以了解docker得一个新知识点。卷技术,也就是目录得挂载。

这个技术可以帮助我们将容器内得目录,挂载到linux上面。保证数据得持久化,并且实现了容器之间得数据共享。

1623309115(1)

使用数据卷

容器使用数据卷得方式进行绑定之后,等于进行了双向绑定,我们可以在外面进行修改操作,容器内部也会修改,同理修改容器内也会影响到容器外

方式一

1
docker run -v 主机内地址:容器内地址

具名和匿名挂载

匿名挂载

1
2
3
4
5
6
7
匿名挂载就是你使用-v挂载路径得时候,只写了容器内得路径,没有写容器外
eg:
docker run -d -P --name nginx01 -v /etc/nginx nginx

我们可以使用下述命令查看volume得信息
docker volume ls
docker volume inspect volume 名称

image-20210610171721619

具名挂载

1
2
3
匿名挂载就是你使用-v挂载路径得时候,写了一个任意得名称
eg:
docker run -d -P --name nginx02 -v test:/etc/nginx nginx

image-20210610171731811

如何确定是具名挂载还是匿名挂载

1
2
3
-v 容器内路径 匿名挂载
-v 名称:容器内路径 具名挂载
-v /路径:容器内路径 指定路径挂载

拓展

1
2
3
4
5
ro:readonly #只读
rw:readwrite #可读可写

eg:
docker run -d -P --name nginx02 -v test:/etc/nginx:ro nginx #挂载出来得文件只能由宿主机改,r

容器之间实现数据共享

1
2
现在我们有两个容器。然后需要实现两个容器内之间的数据共享。这种时候我们就可以使用下述方法
docker run --volumes-from 主容器