设为首页 收藏本站
查看: 936|回复: 0

[经验分享] docker的持久化存储和共享存储和网络架构

[复制链接]

尚未签到

发表于 2019-2-21 10:33:59 | 显示全部楼层 |阅读模式
  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



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675231-1-1.html 上篇帖子: docker自动义私有仓库 下篇帖子: 实战:基于spring cloud + docker构建微服务
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表