docker随笔2--数据卷
1.背景:
容器是镜像的实例,是一个运行的应用,应用在运行过程中会产生数据,需要对容器内的数据进行操作。
2.容器管理数据的两种方式:
数据卷
数据卷容器。
3.数据卷:
3-1:什么是数据卷:
数据卷是一个特殊的目录:
它可以在容器之间共用共享
对数据卷的更新修改不会影响镜像
数据卷的修改会立马生效
生命周期长,直到没有容器使用。
3-2:创建数据卷:
在使用docker run的时候,可以使用 -v 标记可以在容器内创建一个数据卷。 多次使用-v 会创建多个数据卷。
在容器内创建一个数据卷:
docker pull hub.c.163.com/library/nginx #使用一个新的 镜像(这个是我以前下的镜像)
docker tag hub.c.163.com/library/nginx test/nginx #使用对这个镜像打标签生成新的镜像。
使用新的镜像创建数据卷
docker run -v /home/lx/docker/dataVolume:/data -ti test/nginx /bin/bash #创建数据卷并进入容器
在宿主机的dataVolume文件夹,增加test.php
然后在容器中的data里进行查看,发现容器里面多了一个test.php文件。
指定文件夹和指定文件到容器,和上面的方法一样。
3-3:数据卷容器
如果用户需要容器之间共享一些持续更新的数据,最简单的方法是使用数据卷容器。
数据卷容器就是一个普通的容器,专门提供数据卷供其他容器挂载。
使用实例:
#1.创建一个新的镜像 docker tag hub.c.163.com/library/nginx lx/dbdata #创建数据卷(如果不想跟宿主机的文件夹进行关联也可以) docker run -v /dbdata --name dbdata lx/dbdata
在其他容器里使用这个数据卷容器
docker run -ti --volumes-from dbdata test/nginx /bin/bash
使用数据卷容器,并进入查看/dbdata,在这两个容器里对数据进行修改,是同步改变的。
3-4:利用数据卷容器迁移数据
备份数据卷容器中的数据卷:
压缩导出:
docker run --volumes-from dbdata -v $(pwd):/backup --name worker test/nginx
tar -cvf /backup/backup.tar /dbdata
tar -cvf 文件名 目录 :压缩命令
恢复:
如果想恢复导出的备份数据,需要先创建一个数据卷容器,然后使用volumes-from 挂载这个容器。