docker 容器数据管理

时间:2022-06-18 21:27:08

给容器添加一个数据卷

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

docker 容器数据管理

不能在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