容器中的数据可以存储在容器层。但是将数据存放在容器层存在以下问题:
数据不是持久化。意思是如果容器删除了,这些数据也就没了
主机上的其它进程不方便访问这些数据
对这些数据的I/O会经过存储驱动,然后到达主机,引入了一层间接层,因此性能会有所下降
Docker 提供了3种持久化数据的方式:
volumes:存于主机文件系统中的某个区域,由Docker管理(/var/lib/docker/volumes/ on linux)。非Docker进程不应该修改这些数据。卷是Docker中持久化数据的最好方式
bind mount:存于主机文件系统中的任意位置。非Docker进程可以修改这些数据
tmpfs mount(Linux中):存于内存中(注意,并不是持久化到磁盘)。在容器的生命周期中,它能被容器用来存放非持久化的状态或敏感信息。
查看物理机下自动生成的/datavolume目录
在物理机创建aa目录
将会自动同步到容器的/data/目录下
进入data/目录下创建文件会提示只读权限
进入/root/datavolume1/目录下
宿主机创建aa目录
容器内将会自动同步
2.使用dockerfile构建包含数据卷的镜像
数据卷容器
数据卷容器功能是可以让数据在多个docker容器之间共享,即可以让B容器访问A容器的内容,而容器C也可以访问A容器的内容,即先要创建一个后台运行的容器作为server,用于卷提供,这个卷可以为其他容器提供数据存储服务,其他使用此卷的容器作为client端。
日志输出使用
静态文件使用
配置文件使用
多个容器间目录或文件共享
基于volume镜像重新创建一个容器
创建lucky.txt 文件