在容器中管理数据主要有两种方式
- 数据卷(Volumes)
- 挂载主机目录 (Bind mounts)
数据卷
数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
数据卷操作
- 创建数据卷
docker volume create container-vol # container-vol为数据卷的名称
- 看所有数据卷
docker volume ls
- 查看指定 数据卷 的信息
docker volume inspect container-vo
- 查询结果
[
{
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/container-vol/_data",
"Name": "container-vol",
"Options": {},
"Scope": "local"
}
]
- 启动挂载数据卷的容器,例如:
docker run -it --mount source=container-vol,target=/root centos:7 bash
或
docker run -it -v container-vol:/root centos:7 bash
-v container-vol:/root 把数据卷 container-vol 挂载到容器的 /root 目录
- 删除数据卷(如果数据卷被容器使用则无法删除),例如
docker volume rm container-vol
清理无主数据卷
docker volume prune
挂载主机目录
以目录直接挂载的方式进行数据操作
docker run -it -v /usr/app:/opt/app centos:7 bash
其中:
1)/usr/app:为宿主机目录
2)/opt/app: 为启动容器的一个目录
3)-v 用于指定挂载目录,如果本地目录(宿主机目录)不存在, Docker 会自动为你按照挂载目录进行目录的创建。
查看挂载目录信息
docker inspect 91a #91a 为容器id
...
"Mounts": [
{
"Type": "bind",
"Source": "/usr/app",
"Destination": "/opt/app",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
],
...