当前位置: 首页 > news >正文

docker的持久化存储和共享存储和网络架构

1、持久化存储
docker容器中一般不保存数据,只封装系统和环境,这样就存在一个问题,一个docker容器的数据内容不能持久化,且不能共享出来,在生产中,不能很好地提供服务。为了解决这个问题,就要涉及到docker的持久化存储和共享存储的技术了。
所谓持久化,就是将真实机目录挂载到容器中,让容器运行时所产生的数据都写入到真实机的目录中,以此来提供持久存储。

mkdir /var/webroot
docker run -d -p 80:80 -v /var/webroot:/var/www/html 192.168.1.194:5000/wang:sh2
——>-d 后台进程
—>-p 映射端口 物理机端口:容器端口
——>-v 物理机文件夹:容器的目录(容器中目录如果不存在,会自动创建,如果存在,会覆盖掉)
—>192.168.1.194:5000  远程镜像

2、共享存储
现实生存环境中,一般会有专门的文件服务器或者是分布式文件服务器集群来提供文件的存储,此次通过共享文件夹的方式来实现共享存储。
(1)文件服务器提供一个nfs共享存储==>192.168.1.254

yum -y install nfs-utils
vim /etc/exports
/webroot 192.168.1.0/24(rw,sync)
:wq
systemctl restart nfs

(2)docker主机
————mount挂载共享
mount 192.168.1.254/webroot /mnt/
——用-v选项映射磁盘到容器中。
docker run -d -p 80:80 -v /mnt:/var/www/html 192.168.1.194:5000/wang:sh2
这样不管是在容器中写html网页,还是在/mnt/目录下书写html网页,或者是在文件服务器的/webroot下面书写html网页,都可以在网页上被访问到。
这样可以提供负载均衡或者是工作上的同步而不互相干扰,比如一位web编写人员写a网页,另一位web编写人员写b网页,不会出现相互干扰,且书写的东西都被存储在真实的文件服务器中。
3、Docker网络架构
docker网络架构中引用的是linux网桥及虚拟交换机架构,这里的虚拟交换机默认为docker0,也可以手工配置虚拟交换机,不过一般是让docker服务自动配置。
(1)安装一个网桥管理服务
[root@b2 ~]# yum -y install bridge-utils.x86_64
(2)查看虚拟交换机

[root@b2 ~]# brctl show
bridge name bridge id       STP enabled interfaces
docker0     8000.0242ae16e82c   no      
(虚拟交换机)                                    (网卡)//如果启动了容器,则每一个容器会对应一张虚拟网卡

(3)断开断开网卡与交换机的连接,相当于拔网线
brctl delif docker0(虚拟交换机) 网卡名
(4)查看默认docker创建的网络模型

docker network list 
[root@b2 ~]# docker network inspect c088b2c8b1e7(网桥的id)  //查看网桥的底层信息。
docker network 回车,可以看到它的帮助

(5)手动创建一个网络虚拟交换机

docker network create [--help]
docker network create --subnet 192.168.100.0/24(子网) -d bridge(指定是网桥) -o(参数)  \
com.docker.network.bridge.name=docker1  docker1(名字)
//这样用ifconfig看到的名字依然为docker1
docker network ls
ifconfig

(6)启动容器时指定用哪张网桥,不指定时用docker0
docker run -it --network=docker1 192.168.1.194:5000/wang:sh2

(7)docker会自动搭建路由器
创建的docker1用的网段是192.168.100.0网段的,docker0是172.17.0.0网段的,两个网段之间可以相互ping通。
4、容器端口与物理主机端口绑定的原理:
底层原理是启动了linux内核的firewalld(iptables)的端口转发功能。
手动为已经起来的容器绑定端口
(1)查看iptables的规则

iptables-save
-A DOCKER ! -i docker0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 172.17.0.3:80
按照相同的书写写一条规则:
iptables -t nat -A DOCKER ! -i docker0(指定网卡) -p tcp -m tcp --dport 2022(物理端口) -j DNAT --to-destination 172.17.0.3:22

转载于:https://blog.51cto.com/13731599/2134517

相关文章:

  • 项目经理需了解的技术
  • HTTP头和网页分离方法
  • 架构师成长之路-基于android fragment通信的面向对象的万能接口
  • python学习之老男孩python全栈第九期_day004知识点总结
  • 人人快速开发平台
  • shell执行和crontab执行结果不一样的问题
  • 面对谷歌AI,这真的不是拔电线就能够解决的
  • Linux中使用sendmail发送邮件,指定任意邮件发送人
  • linux基础之Vim
  • python如何解决MD5对文件加密出现粘包的情况
  • js获取url锚链,操作class和id的显示和隐藏
  • 【活动预告】Hi,游戏开发者,这有一份您的邀请函
  • Ocelot(v7.0.6)使用小记
  • 如何让机器向“时尚达人”学习?阿里做了个“实用”的图像数据集
  • 机器学习二分类模型评价指标:准确率\召回率\特异度等
  • android百种动画侧滑库、步骤视图、TextView效果、社交、搜房、K线图等源码
  • Angular 响应式表单 基础例子
  • Angular数据绑定机制
  • extract-text-webpack-plugin用法
  • Js基础知识(一) - 变量
  • LeetCode18.四数之和 JavaScript
  • Linux Process Manage
  • MySQL数据库运维之数据恢复
  • opencv python Meanshift 和 Camshift
  • session共享问题解决方案
  • Vue.js源码(2):初探List Rendering
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 开发基于以太坊智能合约的DApp
  • 码农张的Bug人生 - 见面之礼
  • 七牛云 DV OV EV SSL 证书上线,限时折扣低至 6.75 折!
  • 如何优雅地使用 Sublime Text
  • 微信小程序--------语音识别(前端自己也能玩)
  • 转载:[译] 内容加速黑科技趣谈
  • #pragma预处理命令
  • (13)Hive调优——动态分区导致的小文件问题
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (二)学习JVM —— 垃圾回收机制
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (已解决)什么是vue导航守卫
  • (转)LINQ之路
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • .NET 8.0 中有哪些新的变化?
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .net mvc 获取url中controller和action
  • .Net 高效开发之不可错过的实用工具
  • .Net 路由处理厉害了
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • [ 常用工具篇 ] AntSword 蚁剑安装及使用详解
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [.net]官方水晶报表的使用以演示下载
  • [APIO2015]巴厘岛的雕塑
  • [Big Data - Kafka] kafka学习笔记:知识点整理