一 Docker数据卷管理
为什么要用数据卷
docker分层文件系统
性能差 生命周期与容器相同
docker数据卷
mount到主机中,绕开分层文件系统
和主机磁盘性能相同,容器删除后依然保留
仅限本地磁盘,不能随容器迁移
docker提供了两种卷:
bind mount
docker managed volume
bind mount 是将主机上的目录或文件mount到容器里。 使用直观高效,易于理解。
使用 -v 选项指定路径,格式 <host path>:<container path>
[root@server1 ~]# docker run -d --name demo -v /data:/usr/share/nginx/html nginx
5f4f5115e55ff33fca5dfe4de09efd7dc32b7b17437c9e2ae39165014054b3fa
[root@server1 ~]# echo www.westos.org > /data/index.html
[root@server1 ~]# curl 172.17.0.2
www.westos.org
[root@server1 ~]# docker exec -it demo bash
root@5f4f5115e55f:/# ls
bin docker-entrypoint.d home media proc sbin tmp
boot docker-entrypoint.sh lib mnt root srv usr
dev etc lib64 opt run sys var
bind mount 默认权限是读写rw,可以在挂载时指定只读ro。 -v选项指定的路径,如果不存在,挂载时会自动创建
[root@server1 ~]# docker run -it --rm -v /etc/yum.repos.d/dvd.repo:/etc/yum.repo.d/dvd.repo:ro rhel7 bash
bash-4.2# cd /etc/yum.repo.d/
bash-4.2# cat dvd.repo
[dvd]
name=dvd
baseurl=http://172.25.7.250/rhel7.6
gpgcheck=0
[docker]
name=docker
baseurl=http://172.25.7.250/docker-ce
gpgcheck=0
bash-4.2# exit
docker managed volume bind mount必须指定host文件系统路径,限制了移植性。 docker managed volume 不需要指定mount源,docker自动为容器创建数据卷目录。 默认创建的数据卷目录都在 /var/lib/docker/volumes 中。 如果挂载时指向容器内已有的目录,原有数据会被复制到volume中。
bind mount与docker managed volume对比
相同点:两者都是 host 文件系统中的某个路径。
不同点:
二 卷插件简介
docker 卷默认使用的是local类型的驱动,只能存在宿主机,跨主机的volume就需要使用第三方的驱动
docker官方只提供了卷插件的api,开发者可以根据实际需求定制卷插件驱动。
Docker Plugin 是以Web Service的服务运行在每一台Docker Host上的,通过HTTP协议传输RPC风格的JSON数据完成通信。
Plugin的启动和停止,并不归Docker管理,Docker Daemon依靠在缺省路径下查找Unix Socket文件,自动发现可用的插件。
当客户