数据卷
数据卷(Data Volume): 可供一个或多个容器使用的特殊目录,绕过UFS
- Data Volume可在容器间共享和重用
- 对Data Volume的修改立马生效
- 对Data Volume的更新不影响镜像
- Data Volume默认一直存在,即使容器被删除
Note:
- Data Volume用法类似于Linux下对文件|目录进行
mount
添加数据卷
1
2
3
4
5
6
|
# Usage
# docker run -v [HOST_PATH]:[CONTAINER_PATH] IMAGE [COMMAND] [ARG...]
# HOST_PATH:宿主机文件系统路径;CONTAINER_PATH:容器文件系统路径(路径都为绝对路径)
# -v:创建数据卷并挂载到容器,一次run可用多个-v,建立多个数据卷
$ docker run --name datavolume -it -d -v /data ubuntu:14.04 /bin/bash |
删除数据卷
1
2
3
4
5
6
|
# Usage
# docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 数据卷生命周期独立于容器,不随容器删除而删除
# 在删除容器时用:docker rm -v移除数据卷
$ docker rm -v datavolume |
挂载宿主机目录
1
2
3
4
|
# `-v`: 指定宿主机目录挂载到容器
# `:ro`: docker默认数据卷权限为读写,`:ro`指定为只读
$ docker run --name datavolume -v /home/data:/home/mongo/db ubuntu:14.04 /bin/bash |
查看数据卷信息
1
2
3
|
# Usage
# docker inspect [OPTIONS] Container_NAME|ID [NAME|ID...]
$ docker inspect datavolume |
挂载本地文件作为数据卷
1
2
|
# `-v`: 亦可指定主机文件挂载到容器
$ docker rum --rm -it -v ~/.bash_history:/.bash_history ubuntu14:04 /bin/bash |
挂载数据卷容器
挂在数据卷容器主要用于容器间共享数据
1
2
3
4
5
6
|
# Usage
# --volumes-from list —>Mount volumes from the specified container(s) (default[])
# 创建容器时通过`--volumes-from`参数指定要挂载的数据卷容器
# 将datavolume容器的`/home/mongo/db`数据卷, 挂载到另一个容器中
$ docker run --name mydb -d --volumes-from datavolume ubuntu:14.04 /bin/bash |
Note:
- 数据卷容器间可以
级联
挂载
--volumes-from
指定的数据卷容器在挂载时不需要保持运行状态
数据卷备份与恢复
备份
1
2
|
# 备份mydb容器中的数据卷/home/mongo/db, 到宿主机目录下的backup.tar文件中
$ docker run --name mybackup --rm --volumes-from mydb -v $(PWD):/home/back ubuntu:14.04 tar zcvf /home/backup/backup.tar.gz /home/mongo/db |
恢复
1
2
|
# 恢复本地目录下的backup.tar.gz文件到mydb容器下的/home/mongo/db数据卷
$ docker run --rm --volumes-from mydb -v $(pwd):/backup ubuntu:14.04 tar zxvf /backup/backup.tar.gz |
See Also
Thanks to the authors 🙂