博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
docker的持久化存储和共享存储和网络架构
阅读量:6114 次
发布时间:2019-06-21

本文共 2226 字,大约阅读时间需要 7 分钟。

1、持久化存储

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

mkdir /var/webrootdocker 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-utilsvim /etc/exports/webroot 192.168.1.0/24(rw,sync):wqsystemctl 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 showbridge name bridge id       STP enabled interfacesdocker0     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看到的名字依然为docker1docker network lsifconfig

(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

你可能感兴趣的文章
Vivado增量式编译
查看>>
一个很好的幻灯片效果的jquery插件--kinMaxShow
查看>>
微信支付签名配置正确,但返回-1,调不出支付界面(有的手机能调起,有的不能)...
查看>>
第二周例行报告
查看>>
Spring学习(16)--- 基于Java类的配置Bean 之 基于泛型的自动装配(spring4新增)...
查看>>
实验八 sqlite数据库操作
查看>>
四种简单的排序算法(转)
查看>>
Quartz2D之着色器使用初步
查看>>
多线程条件
查看>>
Git [remote rejected] xxxx->xxxx <no such ref>修复了推送分支的错误
查看>>
Porter/Duff,图片加遮罩setColorFilter
查看>>
黄聪:VMware安装Ubuntu10.10【图解】转
查看>>
Centos 6.x 升级openssh版本
查看>>
公式推♂倒题
查看>>
vue实现点击展开,点击收起
查看>>
如何使frame能居中显示
查看>>
第k小数
查看>>
构建之法阅读笔记三
查看>>
Python/PHP 远程文件/图片 下载
查看>>
【原创】一文彻底搞懂安卓WebView白名单校验
查看>>