述
数据卷容器就是一个专门用来挂载数据卷的容器,该容器主要是供其他容器引用和使用,所谓的数据卷容器,实际上就是一个普通的容器.
创建数据卷容器
命令如下:1
docker run -tid -v /usr/share/nginx/html/ --name mydata ubuntu
就是运行了一个ubuntu容器,然后挂载了/usr/share/nginx/html/
这个目录
引用容器
使用如下命令引用数据卷容器:1
2
3docker run -tid --volumes-from mydata -p 80:80 --name nginx1 nginx
docker run -tid --volumes-from mydata -p 81:80 --name nginx2 nginx
执行完毕后,刚刚运行的两个nginx容器就都挂载了同一个数据卷到usr/share/nginx/html/
目录下面,三个容器中,任意一个修改了该目录下的文件,其他两个都能看到变化
可以用docker inspect
命令去查看这三个容器的详情,关于数据卷的部分如下:
从图中可以看到,三个容器的数据卷的描述都是一致的
注意事项
这里有几点需要注意的地方
- 可以多次使用
--volumes-from
参数来从多个容器挂载多个数据卷,还可以从其他已经挂载了容器卷的容器来挂载数据卷. - 使用
--volumes-from
参数所挂载数据卷的容器自身并不需要保持在运行状态 - 如果删除了挂载的容器(包括mydata、nginx1和nginx2),数据卷并不会被自动删除.如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时显式使用
docker rm -v
命令来指定同时删除关联的容器.
数据备份
利用数据卷容器可以实现数据的备份与恢复,备份命令如下:1
docker run mydata --name worker --privileged=true -v /usr/docker/backup/:/backup/ ubuntu tar cvf /backup/backup.tar /usr/share/nginx/html/
--volumes-from
连接待备份的容器-v
用来挂载数据卷到容器的/backup/
目录下面- 最后是个
tar
命令,将容器中/usr/share/nginx/html
目录下的内容备份到/backup
目录下的backup.tar文件中,由于
已经设置将宿主机的/usr/docker/backup/
目录映射到容器的/backup目录,因为备份在容器/backup目录下的压缩文件在当前目录下可以立马看到
执行如下:
可以看到backup.tar就有了已经,然后打开其实就是/usr/share/nginx/html
目录及内容,至此备份就完成了
数据恢复
步骤如下
创建容器
首先需要创建一个容器,这个容器就是要使用恢复的数据的容器,这里就再创建一个nginx容器了,命令如下:1
docker run -itd -p 82:80 -v /usr/share/nginx/html/ --name nginx3 nginx
容器名称是nginx3,然后挂载了一个数据卷
恢复
创建一个临时容器,如下:1
docker run --volumes-from nginx3 -v $(pwd):/backup nginx tar xvf /backup/backup.tar
- 首先还是使用
--volumes-from
参数连接上备份容器,即第一步创建出来的nginx3. - 然后将当前目录映射到容器的/backup目录下.
- 然后执行解压操作,将backup.tar文件解压.解压文件位置描述是一个容器内的地址,但是该地址已经映
射到宿主机中的当前目录了,因此这里要解压缩的文件实际上就是宿主机当前目录下的文件.
至此,数据恢复就完成了