在 Docker 容器之间如果需要共享数据,可以创建一个数据卷容器来实现,并且可以方便的通过数据卷容器来备份、恢复、迁移数据。
创建数据卷容器
创建一个名为:dbdata 的数据卷容器;设置挂载点为 /vdata
。
1 | $ sudo docker run -d -v /vdata --name dbdata alpine sh |
数据卷容器是一个普通的 Docker 容器,可以不需要启动。
使用数据卷容器
使用命令 --volumes-from
创建挂载数据卷容器 dbdata 的容器:db1、db2。
1 | $ sudo docker run -it --volumes-from dbdata --name db1 alpine sh |
在容器 db1 的挂载目录 /vdata
目录下,创建文件 1.txt 等测试数据,查看容器 db2 的挂载目录 /vdata
目录,就可以看到创建的文件数据了。
备份数据卷数据
使用一个临时容器,完成备份数据容器操作。
1 | $ sudo docker run --rm --volumes-from dbdata -v $(pwd):/backup alpine tar cvf /backup/vdata-bak.tar /vdata |
使用 tar cvf
命令,备份数据卷容器 dbdata 中的目录 /vdata
为 vdata-bak.tar
,并挂载到宿主机的当前目录下。
恢复数据卷数据
创建数据卷容器:dbdata2
1 | $ sudo docker run -d -v /vdata --name dbdata2 alpine sh |
使用一个临时容器,恢复备份数据 vdata-bak.tar
到 dbdata2
1 | $ sudo docker run --rm --volumes-from dbdata2 -v $(pwd):/backup alpine tar xvf /backup/vdata-bak.tar |
使用一个临时容器,查看 dbdata2 恢复的数据:
1 | $ sudo docker run --rm --volumes-from dbdata2 alpine /bin/ls /vdata |