《容器的两类存储:》
1.Storage driver
(container层的存储方式:无状态的应用,不需要持久化的数据,随时可以从镜像中创建,容器本身的存储形式,冷数据)
使用环境:
centos7——overlay
centos6——mapper
aufs——ubuntu
btrfs——suse
vfs
xfs
docker info
查看存储驱动
2.Data Volume
(container数据同步host的方式:有状态的数据,需要进行持久化操作,不可以再次创建,属于热数据,数据的存储形式,容器消失,数据不会消失,)
本质上是docker host上的目录或者文件,能够直接挂载到文件系统中。
3.判断冷热数据:
database软件 vs database数据
web应用 vs web日志
前者是冷数据,后者是热数据
前者会被镜像里用,后者要从容器里拿出来的
4.volume没办法限制/配额(root)
注意:由于权限问题,没办法限制容量,同步数据,容器里多大的容量到物理机就是多大的容量。
5.两类存储:
(1)bind mount:
将本地目录/文件映射到容器内
****把本地映射到容器内******:
用法:-v
如:
mkdir /root/htdocs
cd htdocs
vim index.html
this is docker host web server
映射:
docker run -d -p 8090:80 -v /root/htdocs/:/usr/local/apache2/htdocs httpd
验证:
elinks http://192.168.6.110:8090
修改htdocs/index.html
this is docker host web server lpc lpc
elinks http://192.168.6.110:8090
验证:就是可以与容器共享数据
容器没了,数据还在
设置只读权限:容器内无法改变数据,只能在host主机上进行修改
docker run -d -p 80:80 -v /root/htdocs:/usrlocal/apache2/htdocs:ro httpd
应用场景:
比如说一个新闻网站,只需要在物理机的共享目录修改,容器会立马生效,或者是容器里的mysql的数据放到这个共享目录里,更方便数据的备份和迁移。
(2)managed volume:
不需要指定源,需要指定挂载点
默认的源在:/var/lib/docker/volumes/
******把容器内映射到本地*******
1.运行两个容器,并进行volume卷挂载
docker run -d --name web -p 80:80 -v /usr/local/apache2/htdocs httpd
docker run -d --name web -p 8888:80 -v /usr/local/apache2/htdocs httpd
docker ps
2.查看web的volume的具体情况
docker inspect web
3.根据2查出的路径查看源挂载点的目录下有什么
ls -l /var/lib/docker/volumes/
f51e08fe91a0398b85c57fa701f11d5f54760223e82bfa9688b10803e43e52c3/_data
4.看是否与容器中的一致
cat /var/lib/docker/volumes/
f51e08fe91a0398b85c57fa701f11d5f54760223e82bfa9688b10803e43e52c3/_data
/index.html
5.查看docker卷
docker volume ls