docker 容器数据管理
给容器添加一个数据卷
sudo docker run -d -P --name web -v /webapp training/webapp python app.py
可以在Dockerfile
中使用VOLUME
指令来给创建的镜像添加一个或多个卷
挂载一个主机目录到容器中
sudo docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
不能在Dockerfile中指定
创建容器间的数据共享卷
sudo docker run -d -v /dbdata --name dbdata training/postgres sudo docker run -d --volumes-from dbdata --name db1 training/postgres sudo docker run -d --name db3 --volumes-from db1 training/postgres
该卷将不会被删除直到没有容器使用该卷,但是允许你升级或者把有效的数据卷在容器之间迁移
如果你有一些持续更新的数据需要在容器之间共享,最好创建数据卷容器
数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的,就像dbdata
备份
sudo docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata
启动了一个新容器并且挂载dbdata
卷,挂载了一个本地目录作为/backup
卷。最后,通过使用tar命令备份dbdata
卷的内容到我们的/backup
目录下的backup.tar
文件中,当命令完成或者容器停止,我们会留下dbdata
卷的备份
恢复
sudo docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
迁移
sudo docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar
欲为大树,何与草争;心若不动,风又奈何。