3.3、docker数据管理
docker数据管理的两种方式
- 数据卷方式:容器内数据映射到宿主机环境;
- 数据卷容器:使用特定容器维护数据卷。
3.3.1容器内数据映射到宿主机环境
数据卷(date volumes):可供容器使用的特殊目录,它将宿主机的目录直接映射至容器内。
数据卷特性:
- 数据卷可在容器之间共享或重用;
- 对数据卷内的数据操作会马上生效,不管在宿主机上操作,还是在容器内操作;
- 对数据卷的更新不会影响应用,解耦开数据和应用;
- 数据卷会一直存在,直到没有容器使用它,才可以卸载。
3.3.1创建数据卷
docker volume create [OPTIONS] [VOLUME]
options:
-d, --driver string,指定数据卷驱动器的名称,默认为local
实验1:创建一个数据卷test
docker volume create test
查看数据卷:
docker volume ls
这个目录实际上是在/var/lib/docker/volumes/
3.3.2查看数据卷详细信息
docker volume inspect [OPTIONS] VOLUME [VOLUME...]
3.3.3删除未使用的数据卷
docker volume prune [OPTIONS]
options:
-f, --force强制删除
3.3.4删除指定数据卷
docker volume rm [OPTIONS] VOLUME [VOLUME...]
options:
-f, --force强制删除
3.3.5绑定数据卷
docker run --mountIMAGE [COMMAND] [ARG...]
--mount支持三种类型的数据卷
1)volume:普通数据卷,就是4.1.1小节中创建的数据卷,在/var/lib/docker/volumes/;
2)bind:绑定数据卷,映射到宿主机的任意指定目录下;
3)tmpfs:临时数据卷,只存于内存中。
实验1:将宿主机中/root/dockerlab/volume1,这个目录,映射到容器centos的/tmp
docker run -it --name=centos --mount type=bind,source=/root/dockerlab/volume1,destination=/tmp centos:1.0 bash
些命令等同于:
docker run -it --name=centos –v /root/dockerlab/volume1:/tmp centos:1.0 bash
/tmp目录里的内容,就是宿主机/root/dockerlab/volume1的内容。
docker run -it --name=centos –v /root/dockerlab/volume1:/tmp:ro centos:1.0 bash
目录后面加个:ro,表示只读挂载
此时是无法往目录里写东西的。
3.3.6数据卷容器
数据卷容器也是一个容器,它的目的是专门为其它容器提供数据卷挂载。
实验1:
step 1 创建一个容器volume做为数据卷容器,并将宿主机的/root/dockerlab/volume1挂载到容器的/volume1。
docker run -it --name=volume -v /root/dockerlab/volume1:/volume1 centos:1.0 bash
目录已挂载成功。
step 2 创建一个容器centos1,挂载数据卷容器中的目录
docker run -it --name=centos1 --volume-from volume centos:1.0 bash
进入容器,发现目录已正常挂载
step 3 再来创建一个容器centos2, 挂载数据卷容器中的目录
docker run -it --name=centos2 --volume-from volume centos:1.0 bash
进入容器,发现也能挂载同一个目录,且两边的内容是一致的。
任意在哪一个容器内,对目录的数据进行操作,另一个容器内的内容也会同步改变。
--volumes-from 后指定的容器不一定要处于开启状态。