Docker系列教程05-Docker数据卷(Data Volume)学习_volumes" { " volumes data" { } },

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

2、查看所有数据卷
[root@qll251 ~]# docker volume ls
DRIVER VOLUME NAME
local for_nginx

3、 查看指定数据卷详细信息
[root@qll251 ~]# docker volume inspect for_nginx


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9jYkNMZ2ZKWmlicG9FNmdrRW9DTTlmRlhFcWxFUUVTVjdjcDhpY1VQenE2R0JTblg1bmMzd05ZeUxtR25yRlpneVB6UlU2a2NDQnRNVGdaUnRkaWF6OVBjdy82NDA?x-oss-process=image/format,png)


 查看数据卷详细信息 


> 
> 可以看到我们创建的`for_nginx`卷,保存在宿主机`/var/lib/docekr/volumes/`下;以后针对该Volume的写操作都会保存在`/var/lib/docekr/volumes/for_nginx/_data`下。
> 
> 
> 


2、挂载数据卷到容器


创建nginx容器,并挂载 for\_nginx 数据卷



[root@qll251 ~]# docker run -itd -p 88:80 --mount type=volume,source=for_nginx,target=/usr/share/nginx/html nginx
c2124dd81a36e7a798b95276215a59a63d4a5f7d34ccb2bc31889494304ade56



> 
> mount参数后面跟的是键值对。source指定宿主机源文件位置。target指定数据卷在容器中的挂载位置。
> 
> 
> 


使用`docker inspect`查看容器挂载信息:


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9jYkNMZ2ZKWmlicG9FNmdrRW9DTTlmRlhFcWxFUUVTVjdvY2RqNGFRNjYxbzlsWm9heWJlc1d3OXB1aWF3SXluUVJrTGpTRDAxazBGdkNxMDA3bEZaQkVnLzY0MA?x-oss-process=image/format,png)



> 
> 红框标出的内容,相信您基本都能看懂,这里扩展一个小知识点:`RW: true`,表示读写。如果希望数据卷对某个容器来说是只读的,可以通过添加`readonly`选项来实现,代码示例如下:
> 
> 
> 



docker run -itd --mount source=for_nginx,target=/test,readonly nginx


3、修改nginx主页内容



[root@qll251 ~]# cd /var/lib/docker/volumes/
[root@qll251 volumes]# cd for_nginx/_data/
[root@qll251 _data]# ls
50x.html index.html
[root@qll251 _data]# echo “Hello world” > index.html


4、测试访问nginx主页


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9jYkNMZ2ZKWmlicG9FNmdrRW9DTTlmRlhFcWxFUUVTVjdIR1h0ekRHUHJuRXU2T3UxRkRTRHZtb1Q3WXpVN2JaU2g3OUtCRjNITDRJaWJ6aEZIMThYeFV3LzY0MA?x-oss-process=image/format,png)


5、验证数据卷的持久化



1、强制删除nginx容器
[root@qll251 ~]# docker rm -f c2
c2

2、容器被删除,数据卷仍然存在
[root@qll251 ~]# cd /var/lib/docker/volumes/for_nginx/
[root@qll251 for_nginx]# more _data/index.html
Hello world



> 
> 由此可以验证,容器卷与容器的生命周期无关,在删除容器时,docker不会自动删除卷,即使用Volume可以实现数据的持久化保存。
> 
> 
> 


6、清理卷


如果不再使用本地容器卷,那么可以手动清理掉



[root@qll251 ~]# docker volume rm for_nginx


### 二、bind mounts 的基本使用


1、 使用卷创建容器


运行一个nginx容器,并将宿主机`/webapp`目录挂载至容器`/usr/share/nginx/html`目录:



[root@qll251 ~]# docker run -itd -p 81:80 --mount type=bind,source=/webapp,target=/usr/share/nginx/html nginx
690e779843933f735cf9044d7fd159a72ce6dcb833da61a010df58b0122b074e


**上述命令等同于使用旧的`-v`参数,代码如下:**



docker run -itd -p 81:80 -v /webapp:/usr/share/nginx/html nginx


2、验证挂载情况


![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy9jYkNMZ2ZKWmlicG9FNmdrRW9DTTlmRlhFcWxFUUVTVjdmRTMwcDVETlJEQTFMQ2lhNklyVmRHSnBhYm9ncExqSXI4NU9uRW9LVmljcExLaWJVYWlhYm1Gbm53LzY0MA?x-oss-process=image/format,png)


3、进入容器



[root@qll251 ~]# docker exec -it 690 /bin/bash
root@690e77984393:/# cd /usr/share/nginx/html/
root@690e77984393:/usr/share/nginx/html# ls


进入该容器,会发现容器该目录本身存在的文件消失不见了。原因如下:



> 
> 如果你使用`Bind mounts`挂载宿主机目录到一个容器中的`非空目录`,那么此容器中的非空目录中的文件会被隐藏,**容器访问这个目录时能够访问到的文件均来自于宿主机目录。这也是Bind mounts模式和Volumes模式最大的不同**。
> 
> 
> 


### 三、tmpfs mounts 的使用


tmpfs mountfs,顾名思义 是一种非持久化的数据存储。它仅仅将数据保存在宿主机的内存中,一旦容器停止运行,tmpfs mounts会被移除,**从而造成数据丢失**。


1、运行一个容器,并指定临时卷



[root@qll251 ~]# docker run -itd --mount type=tmpfs,target=/test ubuntu:18.04
fad68fbcdab580fad03db7fa1e4f40c4e694fb8a30dc292af38dc3efd556b140
[root@qll251 ~]#


2、在容器中写入数据



[root@qll251 ~]# docker exec -it fa /bin/bash
root@fad68fbcdab5:/# cd /test

最全的Linux教程,Linux从入门到精通

======================

  1. linux从入门到精通(第2版)

  2. Linux系统移植

  3. Linux驱动开发入门与实战

  4. LINUX 系统移植 第2版

  5. Linux开源网络全栈详解 从DPDK到OpenFlow

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

第一份《Linux从入门到精通》466页

====================

内容简介

====

本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。

华为18级工程师呕心沥血撰写3000页Linux学习笔记教程

本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。

需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以点击这里获取!

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值