docker存储卷

1、存储卷
存储卷:在宿主机上的这个与容器形成绑定关系的目录被称作存储卷。
2、存储卷的绑定关系两种
docker容器存储目录:/var/lib/docker/overlay
第一种:容器和宿主机自带的绑定关系目录
[这种绑定关系跟随容器变,容器一旦被删除,宿主机里内容同时也不存在为空,所以一般不用此操作执行绑定关系]如: -rm 容器退出后自动删除

[root@king ~]# docker run --rm -it busybox
/ # ls /
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # mkdir /data
/ # ls /
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # touch /data/cute1.txt
/ # ls /data/cute1.txt 
/data/cute1.txt
/ # ls /data/
cute1.txt
/ #exit   //退出后删除容器
↑复制该窗口查看:
[root@king ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED       STATUS       PORTS     NAMES
b78c20658baf   busybox   "sh"      3 hours ago   Up 3 hours             heuristic_mccarthy
[root@king ~]# docker inspect b78c20658baf
... (↓找到下面这行复制双引号里内容)
 "UpperDir": "/var/lib/docker/overlay2/e9fbc80c6e50fa056290d37b3bbc0a80543f814bee3ef668d3c441b8623ae31f/diff",
 ...
[root@king ~]# cd /var/lib/docker/overlay2/e9fbc80c6e50fa056290d37b3bbc0a80543f814bee3ef668d3c441b8623ae31f/diff
[root@king diff]# ls
data  root
[root@king diff]# ls data/
cute1.txt
[root@king diff]# ls  //以上已删除容器,宿主机上也同时删除不存在

第二种:自己创建新目录,然后绑定挂载卷使用,即使删除容器,宿主机上挂载的数据也不会消失。
3、容器数据的管理
容器数据管理有两种方式:
①数据卷
②数据卷管理

docker 管理数据卷挂载:
 [root@king ~]# docker run --rm -it -v data/ busybox  //-v创建并挂载绑定目录data
/ # ls
bin   day   dev   etc   home  proc  root  sys   tmp   usr   var
/ # touch /data/888
/ # exit  //退出后删除容器,此时宿主机绑定关系目录数据也不存在
复制窗口:
[root@king ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS          PORTS     NAMES
cbcd13b4bf90   busybox   "sh"      14 seconds ago   Up 13 seconds             pensive_einstein
[root@king ~]# docker inspect cbcd13b4bf90  //查看容器详细信息,找到mount
...(找到mount下Source)
 "Mounts": [
            {
                "Type": "volume",
                "Source": "/var/lib/docker/volumes/6730166af36fccbde361c58a5f79ae08a3f25aeb9fb5ad36eb53fe18ccdce111/_data",
...
[root@king ~]# cd /var/lib/docker/volumes/6730166af36fccbde361c58a5f79ae08a3f25aeb9fb5ad36eb53fe18ccdce111/_data
[root@king _data]# ls
888
[root@king _data]# ls
[root@king _data]#
[此时的挂载绑定关系还是docker自己生成的,所以不常用此挂载目录数据]
绑定挂载数据卷:
①创建一个需挂载目录(可事先创建,也可运行容器时就自动创建)
[root@king ~]# mkdir container_v1
[root@king ~]# ls
  container_v1
或{容器[root@king ~]# docker run --rm -it -v /root/container_v1:/data busybox
/ # 
宿主机[root@king ~]# ls
  container_v1    }
②然后运行一个容器并挂载一个主机目录作为数据卷
[root@king ~]# docker run --rm -it -v /root/container_v1:/data busybox
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
③在data目录创建一个文件
/ # cd data/
/data # touch cat.txt
/data # ls
cat.txt
④在宿主机上查看挂载情况
[root@king ~]# ls
  container_v1
[root@king ~]# cd container_v1/
[root@king container_v1]# ls
cat.txt
⑤此时验证当删除容器时,宿主机数据是否存在
容器:
/ # exit
[root@king ~]# 
宿主机:
[root@king container_v1]# ls
cat.txt
[此时目录是创建生成的,并挂载绑定宿主机,当容器删除后,宿主机上的数据依然存在,如果要重新再次绑定执行之前命令,数据回来]

4、在容器中使用存储卷
权限 ro:只读 rw:可读写
在这里插入图片描述
挂载一个本地主机上文件作为数据卷:
如:挂载主机内储存历史命令文件作为容器的数据卷(跟上本机文件绝对路径)

[root@king ~]# docker run --rm -it -v ~/.bash_history:/root/.bash_history busybox
/ # cd
~ # ls -a
. … .ash_history .bash_history
~ # cat .bash_history
cd ~
docker ps
deocker ps -a

5、数据卷容器
容器之间共享数据,并能实时接收更新数据:

1、创建一个数据卷容器Fdata,并在其中创建一个数据卷挂载到/Fdata:
2、运行其它容器d1使用--volumes-from来挂载来自Fdata容器的数据卷
3、容器d1都挂载同一个数据卷到相同的/Fdata目录.分别在各容器创建文件添加内容,发现其它容器都可以接收看到
[可多次使用--volumes-from共享容器数据,即使容器不在运行状态也可接受到,只要没删除容器]

在这里插入图片描述
6、数据卷容器迁移数据

可以利用数据卷容器对其中的数据卷进行备份、恢复,以实现数据的迁移!

【备份】
首先需要备份迁移的容器存在:
[root@king ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED         STATUS         PORTS     NAMES
614fbad3907a   busybox   "sh"      5 minutes ago   Up 5 minutes             Fdata
然后进行迁移:
[root@king ~]# docker run --rm -it --name k1 --volumes-from Fdata -v $(pwd):/backup busybox tar -cvf /backup/backup.tar /backup
//运行一个新容器k1,使容器k1挂载到Fdata容器中的数据卷Fdata上,使用-v参数将本地当前目录挂载到k1容器/backup上,将/backup下数据压缩打包备份为容器/backup/backup.tar,并迁移本机当前目录下backup.tar。
tar: removing leading '/' from member names
...
tar: /backup/backup.tar: file is the archive; skipping
[root@king ~]# ls  //数据卷数据备份迁移完成
 backup.tar

【恢复】
如果要恢复数据到一个容器,首先创建一个带有数据卷的容器k2:
[root@king ~]# docker run --rm -it --name k2 -v /Fdata busybox
创建另一个新的容器,挂载k2容器,并解压备份文件到所挂载的k2容器卷中:
[root@king ~]# docker run --rm -it --volumes-from k2 -v $(pwd):/backup busybox tar -xvf /backup/backup.tar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值