Volume可以将容器以及容器产生的数据分离开来,这样当你删除容器的时候,才不会影响相关的数据。
注意:容器并不是为了持久化。
Volume的创建
Volume可以使用两种方式创建:
- 在Dockerfile中制定VOLUME /some/dir
- 执行Docker run -v /some/dir命令指定
Docker会在主机上创建一个目录,默认情况下是在/var/lib/docker下,然后将其挂载到指定的路径(/some/dir),当删除使用该Volume的容器时,Volume本身不会受到影响,可以一直保存下去。我们在主机上对/var/lib/docker目录的操作会同步到挂载该目录的容器中。
我们也可以使用-v参数来挂载指定的主机目录。例如:
$ docker run -v /opt/data:/data ubuntu
该命令将挂载主机的/opt/data目录到容器内的/data目录上,任何在/opt/data目录的文件都将会出现在容器内。这可以用来实现主机和容器之间的文件共享。
当容器中的指定的目录不存在的时候会自动创建,当已存在的时候,该目录下的文件并不会同步到主机上的Volume,然后Volume中的数据则会被复制到容器中。
Volume的删除
我们可以在删除容器的时候同时删除Volume。
$ docker rm -v my_container
不过如果当前有其他容器仍挂载该Volume时,其是不会被删除的。
因此,由于我们在删除一些容器的时候未加-v参数,导致主机的/var/lib/docker/vfs/dir目录下出现了一些僵尸目录和文件。
数据共享
我们可以在docker run的时候使用–volumes-from参数从一个容器中访问另一个容器的Volume。
$ docker run -it --name newcontainer --volumes-from container-test ubuntu /bin/bash
此时并不管容器container-test是否在运行。
数据容器
通常使用数据容器来持久化数据库和数据文件。
$ docker run --name dbdata mysql echo "data only"
创建了一个名为dbdata的数据容器,运行完echo之后就停止了。数据容器是不需要运行的,只要创建好了就可以了。
$ docker run -d --volumes-from dbdata --name db1 mysql
启动一个数据库服务容器,连接到dbdata数据容器上。
注意:
- 数据容器不需运行,纯粹是在浪费资源
- 不需为数据容器单独使用一个小的镜像,直接使用数据库镜像本身就可以了
数据备份
如果要备份MySQL数据库,我们需要备份数据容器中的/var/lib/mysql文件夹。
$ docker run --rm --volumes-from dbdata -v $(pwd):/backup ubuntu tar zcvf /backup/mysql.tar.gz /var/lib/mysql
此时就会在当前目录下生成一个msql.tar.gz文件。
参考资料:
Docker入门实践 —— 深入理解Docker Volume
http://blog.csdn.net/wangtaoking1/article/details/46005741
相关推荐
docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,...
学习docker时看到的学习笔记
Docker学习笔记压缩包
docker学习笔记,学习docker时做的学习笔记,有例子
Docker学习笔记.pdf
狂神 Docker 学习笔记 超详细从开始到进阶到补充 Docker 概述 Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的...
非常详细的 Docker 学习笔记
docker学习笔记
黑马Docker课程文档笔记
CentOS7安装Docker Docker_阿里云镜像加速器配置 Docker_帮助命令 Docker_镜像命令 Docker_容器命令 Docker_容器数据卷用V命令添加 Docker_容器数据卷用DockerFile添加 Docker_容器数据卷volumes-from DockerFile...
狂神说Docker容器学习笔记全
Docker 学习笔记1
Docker学习笔记1
docker学习笔记整理的思维导图.比较详细. 希望大家学的开心,配合本博客的Docker实用专栏学习效果更佳.
docker学习笔记md
docker学习思维笔记.rar
Docker 学习笔记图图图图