Docker整理笔记 (三)

Docker 存储卷
Docker存储通过多层联合挂载的方式实现,上层读写(通过标记的方式),下层只读,写时复制。
优点:底层镜像不用改变
缺点:i/0效率低下 数据无法共享 容器删除会丢失
存储卷(volume):容器自身存储有限且关闭后数据会丢失,可以把本地磁盘或者共享磁盘的一个文件系统绑定到容器上,因此即使容器关闭了数据还会持久存储到本地。
A 绑定挂载卷
手动指定
B docker管理卷
docker默认指定

例子:
-v 文件系统路径 : container路径 如果不指定文件系统就默认docker管理卷方式

[root@docker ~]# docker run -it --name  b2   -v  /data   busybox
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data/ 
/data # ls
/data # 

可以查看container 详细信息会显示挂载情况:
docker inspect b2

        "Mounts": [
            {
                "Type": "volume",
                "Name": "fb119439f5fbf83d1a8f9b0914ff457fced9859c960e126ce94932d36cc0a8f1",
                "Source": "/var/lib/docker/volumes/fb119439f5fbf83d1a8f9b0914ff457fced9859c960e126ce94932d36cc0a8f1/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }

测试是不是在此目录:

[root@docker ~]# docker run -it --name  b2   -v  /data   busybox
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data/ 
/data # ls
/data # touch a.sh
/data # ls
a.sh
/data # 

去真机看看:

[root@docker ~]# cd /var/lib/docker/volumes/fb119439f5fbf83d1a8f9b0914ff457fced9859c960e126ce94932d36cc0a8f1/_data
[root@docker _data]# ls
a.sh

也就是说假如我们启动一个web服务 即使容器删除 只要创建新容器时候数据文件再重新指定也就能恢复web

也可以多个容器使用同一个卷:
方法1:

[root@docker ~]# docker  run  --name b3   -it --rm  -v   /data/a:/etc  busybox 
/ # ls
bin   dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd /etc/ 
/etc # touch  a.sh
/etc # ls
a.sh         hostname     hosts        resolv.conf
/etc # 


[root@docker ~]# docker run  --name b1  -it --rm -v /data/a:/data  busybox 
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cd data/ 
/data # ls
a.sh         hostname     hosts        resolv.conf
/data # 

方法2:
创建容器是指定和另外一个容器存储卷设置相同:
–volimes-from 模板容器

[root@docker ~]# docker run  --name b4    -it  --rm   --volumes-from  b3  busybox 
/ # ls etc/ 
a.sh         hostname     hosts        resolv.conf
/ # 

可以再加上之前的联盟网络 创建出lntm模型,nginx tomcat mysql 共享network ipc mount UTS 他们之间通过lo网卡传递信息。

在查看信息时,我们也可以通过类似ansible的模板一样指定“字典”查看

[root@docker ~]# docker inspect    -f {{.NetworkSettings}} zw 
{{ 1a9913b0c8a7b841da601ec61021898c062584dec87501cfc9aab00b850450e6 false  0 map[] /var/run/docker/netns/1a9913b0c8a7 [] []} {   0  0  } map[bridge:0xc420184b40]}

Docker file

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值