Docker 从入门到精通(一)
Docker 从入门到精通(二)
数据卷容器
如果用户需要在多个容器之间进行共享持续更新的数据,最简单的方式就是使用数据卷容器,他的目的就是专门用来提供数据卷供其他容器挂载
首先,创建一个数据卷容器dadata,并创建一个数据卷挂载到/dbdata
代码语言:javascript复制$ docker run -it -v /dbdata --name dbdata ubuntu
然后,可以在其他容器使用--volumes-from来挂载dbdata容器中的数据卷
代码语言:javascript复制$ docker run -it --volumes-from dbdata --name db1 ubuntu
$ docker run -it --volumes-from dbdata --name db2 ubuntu
当然也可以在其他已经挂载了的容器来挂载数据卷
代码语言:javascript复制$ docker run -d --name db3 --volumes-from db1 training/postgres
数据卷备份
我们可以把数据卷/dbdata目录下的数据进行备份
- --volumes-from dbdata,即让worker容器挂载到dbdata容器的数据卷
- -v $(pwd):/backup,即本地目录挂载到容器backup目录
$ docker run -it --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu /bin/bash
第一步进入worker容器,在数据卷目录下造一些数据
代码语言:javascript复制$ docker attach 5b4a7dc729a9
root@5b4a7dc729a9:/# ls
backup bin boot dbdata dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@5b4a7dc729a9:/# cd dbdata/
root@5b4a7dc729a9:/dbdata# echo "hello" > test
第二步,把数据卷的目录数据打包到backup目录下进行备份
代码语言:javascript复制root@5b4a7dc729a9:/dbdata# tar cvf /backup/backuo.bak.tar ./
./
./test
root@5b4a7dc729a9:/dbdata# cd /backup/
root@5b4a7dc729a9:/backup# ls backuo.bak.tar
backuo.bak.tar
第三步,退出容器,在本宿主机也可以看到你的备份
代码语言:javascript复制root@5b4a7dc729a9:/backup# exit
exit
$ ls backuo.bak.tar
backuo.bak.tar
数据卷恢复
如果要将数据恢复到一个容器中,首先要创建一个有数据卷的容器 如 dbdata
代码语言:javascript复制$ docker run -it -v /dbdata --name dbdata ubuntu
然后创建一个新的容器,挂载到dbdata的容器并使用解压备份文件到所挂载的容器卷中即/dbdata目录下
代码语言:javascript复制$ docker run -it --volumes-from dbdata -v $(pwd):/backup --name worker1 ubuntu /bin/bash
root@b7e385fb19bb:/# ls
backup bin boot dbdata dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@b7e385fb19bb:/# cd backup/
root@b7e385fb19bb:/backup# tar xvf backuo.bak.tar -C /dbdata/
./
./test
root@b7e385fb19bb:/backup# cd /dbdata/
root@b7e385fb19bb:/dbdata# ls
test