Docker数据管理
一、数据卷
数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,类似于linux的mount行为。
数据卷可以提供很多可用的特性:
- 数据卷可以在容器之间共享和重用,容器间传递数据变得高效和方便。
- 对数据卷内数据的修改会立刻生效,无论是容器内操作还是本地操作。
- 对数据卷的更新不会影响镜像,解耦应用和数据。
- 卷会一直存在,直到没有容器使用,可以安全的卸载它。
1.创建数据卷
D:\docker_test>docker volume create -d local test
test
其他命令:
1)查看数据卷详细信息
D:\docker_test>docker volume inspect test [ { "CreatedAt": "2021-10-31T08:21:54Z", "Driver": "local", "Labels": {}, "Mountpoint": "/var/lib/docker/volumes/test/_data", "Name": "test", "Options": {}, "Scope": "local" } ]
2)列出所有数据卷
D:\docker_test>docker volume ls DRIVER VOLUME NAME local test
3)清理无用数据卷
D:\docker_test>docker volume prune
4)删除数据卷
D:\docker_test>docker volume rm test
2.绑定数据卷
在执行docker run命令时,可以使用-mount选项来使用数据卷
-mount支持三种类型的数据卷:
volume:普通数据卷,映射到主机volumes目录下
bind:绑定数据卷,映射到主机指定目录下
tmpfs:临时数据卷,只存在于内存中
D:\docker_test>docker run -d -P name web --mount type=bind, source=/webapp, destination=/opt/webapp training/webapp python app.py
上面使用training/webapp镜像运行容器,并创建一个数据卷挂载到容器的/opt/webapp目录。
Docker挂载目录默认权限是读写(rw),用户可以ro指定为只读。
二、数据卷容器
如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载。
1)创建一个数据卷容器,并在其中创建一个数据卷挂载到/dbdata目录:
D:\docker_test>docker run -it -v /dbdata --name dbdata ubuntu:18.04
2)创建db1和db2两个容器,并从dbdata目录挂载数据卷:
D:\docker_test>docker run -it --volumes-from dbdata --name db1 ubuntu:18.04 D:\docker_test>docker run -it --volumes-from dbdata --name db2 ubuntu:18.04
现在在dbdata、db1、db2三个容器中任一容器的dbdata目录下新建/编辑/删除文件,其他两个容器的dbdata目录均实时更新。