Docker数据卷管理&资源控制
数据卷管理
docker分层文件系统 :性能差,生命周期与容器相同
docker数据卷 :mount到主机,绕开分层文件系统 和主机次哦按性能相同,容器删除后依然保留 限制本地磁盘,不能随容器迁移
bind mount
将主机的目录或者文件mount到容器里
使用直观高效,易于理解
如果一方文件不存在,会新建
数据卷挂载
格式<host path>:<container path>
docker run -d --name web -v /opt/web:/usr/share/nginx/html nginx
docker exec web mount
df
vim /opt/web/index.html
或者
docker exec -it web bash进入交互界面
vim /usr/share/nginx/html/index.html
这里nginx容器是个应用容器,无法进入交互界面,
而ubuntu容器是个底层的系统容器,运行的是个shell
设置只读权限
docker run -d --name web -v /opt/data1:/data1 -v /opt/data2:/data2:ro nginx
docker run -d --name web -v /etc/yum.repos.d/rhel7.5.repo:/etc/yum.repos.d/rhel7.5.repo:ro rhel7 bash 也可以挂载yum源
yum repolist
data2在宿主机可以创建文件,但是在容器中不行
docker manager volume
bind mount必须指定host的文件系统,限制了移植性
docker manager volume自动为容器创建数据卷,不需要指定mount源
docker run -d --name web -v /opt/data1 nginx
docker ps -a
docker inspect
docker run -d --name web -v data1:/data1 nginx 指定自动生成的目录名称
docker ps -a
docker inspect
docker volume ls
docker volume prune 删除没有被容器使用的卷
docker volume create web
docker run -d --name web -v web:/usr/share/nginx/html nginx 会发现web中有复制过来的文件
ls /var/lib/docker/volumes/web/_data
如果挂载时指向容器内已有的目录,原有的数据会被复制到volume中
1.docker 为容器提供了两种存储资源:数据层和data volume
2.数据层包括镜像层和容器层,由storage driver管理
3.data volume有两种类型:bind mount 和docker managed volume
4.bind mount 可实现容器与host之间,容器与容器之间共享数据
5.volume container 是一种具有更好移植性的容器间数据共享方案,特别是volume container
不同点 | bind mount | docker managed |
---|---|---|
volume位置 | 可任意指定 | /var/lib/docker/volumes… |
对已有mount point影响 | 隐藏并替换为volume | 原有数据复制到volume |
是否支持单个文件 | 支持 | 不支持只能是目录 |
权限控制 | 可设置为只读,默认为读写权限 无控制, | 均为读写 |
移植性 | 移植性弱 与host path绑定 | 移植性强 无须指定host目录 |