docker容器的两类存储

《容器的两类存储:》

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

 docker容器的两类存储_第1张图片

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

 

转载于:https://www.cnblogs.com/Leonardo-li/p/8946477.html

你可能感兴趣的:(docker容器的两类存储)