【docker基础学习篇3】数据卷、docker的五种网络模式

数据卷(volume)

问题:容器中的数据保存在内存中,一个容器就是一个进程,万一进程停止后,那么容器的数据该如何保存、保存在哪里呢,如何做容器中数据的持久化?

数据卷就是为了解决数据存储问题
作用:容器和宿主机之间共享数据,让容器中的数据可以永久保存。

docker提供了一下三种方将数据从宿主机中挂载到容器中:
在这里插入图片描述

1. volumes:Docker管理宿主机文件系统的一部分,默认位于 /var/lib/docker/volumes 目录中;(最常用的方式)
在这里插入图片描述
 由上图可以知道,目前所有Container的数据都保存在了这个目录下边,由于没有在创建时指定卷,所以Docker帮我们默认创建许多匿名(就上面这一堆很长ID的名字)卷。
 
2.bind mounts: 可以存储在宿主机系统的任意位置(比较常用的方式)
 但是,bind mount在不同的宿主机系统时不可移植的,比如Windows和Linux的目录结构是不一样的,bind mount所指向的host目录也不能一样。这也是为什么bind mount不能出现在Dockerfile中的原因,因为这样Dockerfile就不可移植了。

3.tmpfs: 挂载存储在宿主机系统的内存中,而不会写入宿主机的文件系统(一般不会使用)

Volume的基本使用

管理卷

# docker volume create edc-nginx-vol // 创建一个自定义容器卷
# docker volume ls // 查看所有容器卷
# docker volume inspect edc-nginx-vol // 查看指定容器卷详情信息

使用挂载本地目录的方式做数据的持久化
将宿主机中的文件 /web/下的文件挂载到容器中 /usr/share/nginx/html 目录下:

[root@sc-docker-1 web]# docker run --name sc-nginx-1 -p 8080:80 -d -v /web/:/usr/share/nginx/html nginx

使用挂载数据卷的方式做持久化
有了自定义容器卷,我们可以创建一个使用这个数据卷的容器,这里我们以nginx为例:

docker run -d -it --name=edc-nginx -p 8080:80 -v edc-nginx-vol
:/usr/share/nginx/html nginx

其中,-v代表挂载数据卷,这里使用自定数据卷edc-nginx-vol,并且将数据卷挂载到 /usr/share/nginx/html (这个目录是yum安装nginx的默认网页目录)。

如果没有通过-v指定,那么Docker会默认帮我们创建匿名数据卷进行映射和挂载。
验证:
创建好容器之后,我们可以进入容器里面看看:
在这里插入图片描述
进入宿主机中查看之前自定义的数据卷
在这里插入图片描述
关闭nginx容器,查看数据卷中的文件是否丢失
在这里插入图片描述
由此可以验证,在数据卷里边的东西是可以持久化的。如果下次还需要创建一个nginx容器,那么还是复用当前数据卷里面的文件。

此外,我们还可以启动多个nginx容器实例,并且共享同一个数据卷,复用性和扩展性较强。
  
使用volume方式做数据持久化比使用挂载方式做持久化的优势
卷是持久化 Docker 容器生成和使用的数据的首选机制。虽然绑定挂载依赖于主机的目录结构和操作系统,但卷完全由 Docker 管理。与绑定安装相比,卷有几个优点:

  1. 与绑定安装相比,卷更容易备份或迁移。
  2. 您可以使用 Docker CLI 命令或 Docker API 管理卷
  3. 卷适用于 Linux 和 Windows 容器。
  4. 卷可以在多个容器之间更安全地共享
  5. 卷驱动程序允许您将卷存储在远程主机或云提供商上,以加密卷的内容或添加其他功能
  6. 卷驱动程序允许您将卷存储在远程主机或云提供商上,以加密卷的内容或添加其他功能
  7. 卷驱动程序允许您将卷存储在远程主机或云提供商上,以加密卷的内容或添加其他功能
  8. 新卷的内容可以由容器预先填充
  9. Docker 桌面上的卷比 Mac 和 Windows 主机上的绑定挂载具有更高的性能。

此外,与在容器的可写层中持久化数据相比,卷通常是更好的选择,因为卷不会增加使用它的容器的大小,并且卷的内容存在于给定容器的生命周期之外

docker的五种网络模式

在这里插入图片描述

请添加图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Overlay网络实际上是目前最主流的容器跨节点数据传输和路由方案。
容器在两个跨主机进行通信的时候,是使用overlay network这个网络模式进行通信;如果使用host也可以实现跨主机进行通信,直接使用这个物理的ip地址就可以进行通信。overlay它会虚拟出一个网络比如10.0.2.3这个ip地址。在这个overlay网络模式里面,有一个类似于服务网关的地址,然后把这个包转发到物理服务器这个地址,最终通过路由和交换,到达另一个服务器的ip地址。
要实现overlay网络,我们会有一个服务发现。比如说consul,会定义一个ip地址池,比如10.0.2.0/24之类的。上面会有容器,容器的ip地址会从上面去获取。获取完了后,会通过ens33来进行通信,这样就实现跨主机的通信。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值