docker如何能让多个容器共享一个数据呢,又如何在容器被删除后,还能保存住容器的数据呢?
所以docker引入了卷的概念:容器中管理数据主要有两种方式:1. 数据卷 2. 数据卷容器
“卷”是容器上的一个或多个“目录”,此类目录可绕过联合文件系统**,**与宿主机上的某个目录“绑定(关联)”,类似于挂载一样,宿主机的/data/web目录与容器中的/container/data/web目录绑定关系,然后容器中的进程向这个目录中写数据时,是直接写在宿主机的目录上的,绕过容器文件系统与宿主机的文件系统建立关联关系,使得可以在宿主机和容器内共享数据库内容,让容器直接访问宿主机中的内容,也可以宿主机向容器供集内容,两者是同步的。
docker run --name testweb -d -p 92:80 -v testwebvloume:/usr/share/nginx/html/ nginx:v3
# 利用nginx:v3镜像创建了一个名为testweb的容器,对外暴露的端口号是92,将/usr/share/nginx/html目录与数据卷testwebvloume 映射。
docker volume create volume_name #表示创建一个数据卷。
docker volume ls # 列出数据卷列表
docker volume rm volume_name # 删除指定数据卷
docker volume inspect volume_name # 查看数据卷的详细信息
例如:docker volume inspect testwebvloume
[
{
"CreatedAt": "2019-07-26T11:55:06+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/testwebvloume/_data",# 表示数据卷的挂载点也就是挂载位置
"Name": "testwebvloume",
"Options": null,
"Scope": "local"
}
]
# 使用docker volume --help 帮助查看命令使用指南
Usage: docker volume COMMAND
Manage volumes
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes
docker run -v commmon:/usr/share/nginx/html/ --name commvolume nginx:v3
#创建一个名为commvolume的容器,他的数据目录挂载到common中
docker run -d -p 99:80 --name commweb --volumes-from commvolume nginx:v3
#创建一个容器名为commweb,它的数据卷来自于commvolume 容器。