那下面我们就来聊聊docker容器的数据管理:数据卷。
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
数据卷可以在容器之间共享和重用
对数据卷的修改会立马生效
对数据卷的更新,不会影响镜像
卷会一直存在,直到没有容器使用
可以使用带有 -v 参数的 docker run 命令给容器添加一个数据卷.在一个 docker run 中可以多次使用 -v 参数来达到挂载多个数据卷的目的.我们现在在web应用容器中挂载单个卷。
使用 -v 参数也可以挂载宿主的文件夹到容器里
[root@node01 httpd]# docker run -d -v /data/www:/var/www/html -p 80:80 httpd-php
查看挂载效果如下:
如果你有一些持久数据需要在容器之间共享或想要使用非持久性容器,最好的方式是创建一个命名数据卷容器,然后从数据卷容器中挂载数据. 我们来创建一个带有卷的命名容器来共享数据.
[root@node01 ~]# docker run -d -p 4444:22 -v /data --name data centos:sshd
另外一个有用的功能是使用它们来进行备份,恢复或迁移数据。如下所示,我们使用—volumes-from 标记来创建一个挂载了要备份数据卷的容器:
[root@node01 ~]# docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
数据卷很好的实现了容器中数据的持久化问题,在实际使用中,可以将日志、应用数据等放入数据卷中。后面也有专门的文章介绍容器日志的管理办法。