数据卷的使用

数据卷是一个位于容器中的特殊目录, 其目的是绕过UFS文件系统提供持久化和数据共享(UFS的详细介绍请参考附录B).

  • 数据卷可以在容器之间共享和重用数据
  • 对数据卷的修改是直接的
  • 更新镜像不会包含对数据卷的数据
  • 数据卷一直存在, 直到不再有容器使用

添加数据卷

在创建容器时通过指定-v参数创建数据卷,可使用-v多次挂载多个数据卷

# Usage
# 其中HOST_PATH表示宿主系统的文件系统路径,CONTAINER_PATH表示容器的文件系统路径
# 文件系统路径都为绝对路径
$ docker run -v [HOST_PATH]:[CONTAINER_PATH] IMAGE [COMMAND] [ARG...]
# 创建一个基于ubuntu:14.04的数据卷容器
$ sudo docker run --name mydata -d -v /data ubuntu:14.04 /bin/bash

挂载宿主系统目录作为数据卷

# 创建一个基于golang:1.2的容器,并指定宿主系统/gopath路径为GOPATH路径
# 宿主系统中如果不存在该目录,Docker会自动创建
$ sudo docker run --name mygolang -d -v /gopath:/gopath golang:1.2 /bin/bash

挂载数据卷容器

挂载数据卷容器主要用于容器间数据共享

# 在创建容器时通过指定--volumes-from参数挂载数据卷容器
# 将上面创建的mydata容器中/data数据卷,挂载到另外一个容器中
$ sudo docker --name db1 -d --volumes-from mydata ubuntu:14.04 /bin/bash

数据卷的备份与恢复

  • 备份
# 备份mydata容器中的数据卷/data,到当前目录下的backup.tar文件中
$ sudo docker run --rm --volumes-from mydata -v $(pwd):/backup ubuntu:14.04 tar cvf /backup/backup.tar /data
  • 恢复
# 恢复本地目录下的backup.tar文件到mydata容器下的/data数据卷
$ sudo docker run --rm --volumes-from mydata -v $(pwd):/backup ubuntu:14.04 tar xvf /backup/backup.tar
文章导航