Docker从入门到精通(三)

2023-02-23 17:20:20 浏览数 (1)

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目录
代码语言:javascript复制
$ 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

0 人点赞