摘要: 卷为docker提供了独立于容器的数据管理机制;我们可以把镜像想象成静态文件,例如程序,把卷类比成动态内容,比如数据,于是镜像可以复用,而卷可以共享;卷实现了程序(镜像)和数据(卷)的分离;实现了容器之间的数据共享和复用,使得容器间传递数据变得高效方便;对数据卷内数据的修改会立马生效,无论是在容器中修改还是在本地操作;docker有两种类型的卷,每种类型都在容器中存在一个挂载点,但其在宿主机上的位置有所不同而已;bind mount volume这种卷是由用户指定目录把存储上的一个目录挂载到容器内部的某个目录;docekr-managed volume这种卷是docker自己管理的卷,通常表现形式上把宿主机上的/var/lib/docker/vfs/dir/某个卷的ID 挂载到容器内部某个目录下; 阅读全文
posted @ 2020-05-25 18:05 Linux-1874 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 默认情况下启动docker容器都是bridge网络,桥接到docker0桥;对于docker容器来讲,各个容器之间的网络上相互隔离的;相互隔离就表示在第一个容器里监听某个端口,对于第二个容器是不可见的;对于宿主机来讲,两个容器的网络都是共享docker0桥的网络;同时在宿主机上的网络名称空间中是可以看到两个容器的虚拟接口是连接到docker0桥的;所以默认情况启动的容器相互之间是可以基于docker0来通信;我们可以把docker0桥理解成连接两个容器的交换机; 阅读全文
posted @ 2020-05-24 20:58 Linux-1874 阅读(175) 评论(0) 推荐(1) 编辑
摘要: 在docker容器里运行的服务必须前台运行,如果后台运行会导致容器一启动就退出了,原因是容器内部本身就只有一个进程在跑,如果你后台运行,就没有进程在前台,所以docker会认为该容器已经宕机;其实我们可以理解为容器内部前台跑的程序是支撑整个容器为运行态的重要骨架; 阅读全文
posted @ 2020-05-23 13:54 Linux-1874 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 在docker容器里通常只会有一个进程和该进程的子进程,通常该进程的进程编号为1,这也就说明了如果docker容器里进程编号为1的进程宕了,那么该容器也就随之宕掉;docker的镜像是采用的一种“分层构建,联合挂载”的方式实现;将不同功能的镜像通过一定的层次结构进行挂载,组合成一个新的镜像;在docker启动为容器时,它会在该镜像的最上层加上一个可写层;这使得我们可以在容器内部修改某些数据;而保存修改后的数据只会对当前容器有效,如果在用同一镜像启动为其他容器时,我们修改的数据在后面的容器是不存在的,原因就是镜像的每一层都是只读的;只有镜像运行为容器时才会有一层可写层,而该可写层只针对该容器生效; 阅读全文
posted @ 2020-05-22 21:06 Linux-1874 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 前一篇博文中主要说了下,lxc容器在Linux上的简单管理,回顾请参考http://www.yinongsl.com/qiuhom-1874/p/12901493.html;今天我们来介绍下lxc的图像管理工具LXC WEB Panel;   项目下载地址:http://github.com/lxc-webpanel/LXC-Web-Panel.git;   1、安装python-flask 阅读全文
posted @ 2020-05-17 12:44 Linux-1874 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 什么是容器?在生活中我们常见的容器有各种瓶瓶罐罐、各种能够容纳其它物料的东西叫容器;容器的特点就是有着很好的隔离作用,使得不同的物料互相隔离;除此之外容器还方便运输、方便储存;这是生活中所说的容器,以及它的特点;在计算机领域中,所谓容器不外乎也有同生活中的容器的特点,隔离,方便“运输”(计算机中的运输我们叫移植,从系统A到系统B),方便“存储”(这里指程序以及运行所依赖的库文件打包,即程序及运行时环境打包); 阅读全文
posted @ 2020-05-16 23:05 Linux-1874 阅读(171) 评论(0) 推荐(1) 编辑
摘要: 首先我们来看一下haproxy的https的配置;https是什么我这里就不过多阐述了,有关证书的申请相关说明请参考http://www.yinongsl.com/qiuhom-1874/p/12237944.html;在haproxy的配置文件中,我们要明确的声明监听某个端口,该端口需要ssl协议来访问,类似nginx里的listen 443 ssl配置;除此之外我们还需要用crt来指定证书;不同于nginx里的配置是haproxy的证书内容包含私钥信息;所以在我们申请好证书后,还需要把证书文件内容同私钥文件做合并; 阅读全文
posted @ 2020-05-03 01:45 Linux-1874 阅读(278) 评论(0) 推荐(0) 编辑
摘要: ACL(access control list)翻译过来就是访问控制列表;相信ACL这个词对大家都不是太陌生;Linux里的权限里有ACL,httpd、nginx、varnish里都有ACL的概念;访问控制列表(ACL)的使用提供了一个灵活的解决方案来执行内容切换,并通常根据从请求、响应或任何环境状态提取的内容做出决策。haproxy中访问控制实现和httpd、nginx、varnish中的访问控制类似,都是先扑捉用户的请求报文或响应报文,或者其他环境状态的信息来把客户端分类;然后把该ACL作为条件判断,把不同类别或者说符合我们定义ACL的客户端做其他操作; 阅读全文
posted @ 2020-05-02 16:00 Linux-1874 阅读(233) 评论(0) 推荐(0) 编辑
摘要: errorloc和errorloc302都是同样的效果,都是以临时重定向到指定的url上;这里还需要注意一点,这两种方式都是跳转前请求的方法是什么,跳转对应url也是同样的方法;这样一来对于其他非GET方法请求出现403错误码的时候,对应的错误页就无法正常处理(通常只允许GET方法去请求别的URL);比如跳转前用PUT方法,出现错误403后,按照上面的配置,对应指定的错误页的url也会用PUT方法去请求;为了解决这样的问题,我们这里需要用到errorloc303来指定;该指令的意思是返回303响应码;如果请求前非GET方法,而出现对应错误后,用GET方法去请求对应错误状态码指定的URL; 阅读全文
posted @ 2020-04-29 01:49 Linux-1874 阅读(230) 评论(0) 推荐(1) 编辑
摘要: 作为代理服务器,在完成一次http事务的过程中,报文的流向是这样的;首先用户端的请求会到达haproxy,haproxy收到用户的请求,对其进行拆包分析,然后根据用户请求报文的某些首部的特征,然后模拟用户的请求去请求对应后端server,此时haproxy就扮演着客户端角色去请求后端服务器;后端服务器收到haproxy的请求,然后响应资源内容给haproxy,haproxy收到后端服务器的响应,然后再次拆包,分析,然后封装响应报文响应客户端;在这样的一个过程中,对于客户端的请求报文是否能够到达后端服务器或者后端服务器的响应报文是否能够到达客户端这个需要haproxy说了算 阅读全文
posted @ 2020-04-27 22:22 Linux-1874 阅读(204) 评论(0) 推荐(0) 编辑
摘要: cookie就是用来让服务端辨识客户端的一种机制;而对于haproxy来讲,基于cookie来做会话保持的原理就是通过对后端服务器响应报文中的cookie信息中插入(或覆盖的方式)一个键值对,在客户端下次访问时,检查对应cookie首部的信息,从而让haproxy能够判断把该请求调度在那个后端服务器上;通常我们会在server上设置一个cookie的值,在listen或backend中设置一个cookie的键,明确说明以怎样的方式设置cookie的键;通过listen或backend中设置的cookie的键结合server后面的cookie的值组成的cookie信息,从而实现不同的cookie信息调度到不同的server上去; 阅读全文
posted @ 2020-04-26 01:21 Linux-1874 阅读(277) 评论(0) 推荐(1) 编辑
摘要: roundrobin:动态轮询;支持权重的运行时调整,支持慢启动,每个后端中最多支持4095个server;什么意思呢?动态调整权重就是说不重启服务的情况下调整权重;慢启动说的是,前端的流量不会一下子全部给打进来,而是一部分一部分的打到后端服务器上;这样可以有效防止流量过大时一下子把后端服务器压垮的情况;后端最多支持4095个server表示在一个backend或listen中使用该算法最多只能定义4095个server; 阅读全文
posted @ 2020-04-25 01:43 Linux-1874 阅读(227) 评论(0) 推荐(0) 编辑
摘要: haproxy的配置文件大概可以分两段;第一段配置上global配置段即全局配置段,主要是针对haproxy的进程和安全相关的;第二段是proxies代理配置段,主要是配置haproxy前端监听那个地址那个端口以及后端server的名称、地址、端口,以及server相关属性等配置;而proxies配置段里又分defaults配置段,这个部分主要是定义后续的backend,listen这两个段的默认配置;什么意思呢?也就是在后面的配置中如果我们没有写对应参数,它默认会继承defaults里的配置;如果说后面的配置中和前边的defaults中的配置重复了,那么就已后面的配置生效,也就是说后面的配置段优先级高于defaults里的配置; 阅读全文
posted @ 2020-04-24 01:53 Linux-1874 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 前面聊nginx的时候我们有聊到过nginx的一个重要的功能反向代理,这里再简单回顾下,所谓代理就是“一手托两边”,什么意思呢?就是代理服务器它面向客户端一侧它扮演服务器角色,面向服务器一侧它扮演客户端角色;而反向代理就是代理服务端响应客户端的请求;我们把这种用于代理服务器响应客户端角色叫反向代理;haproxy就是一反向代理实现的软件,在基于反代的模式下,可以对后端服务器做四层或七层的负载均衡;通常情况下haproxy工作在一个流量入口的节点上,用于接收并把客户端的请求分发给不同应用的后端服务器; 阅读全文
posted @ 2020-04-21 00:11 Linux-1874 阅读(507) 评论(0) 推荐(2) 编辑
摘要: 对于varnish来讲,对后端主机做健康状态监测的原理是请求后端主机特定的资源,如果能够在指定的超时时长内正确响应我们就认为后端主机上健康状态的,如果不能正确的响应我们就认为该后端主机上不健康的;在varnish中对后端主机做健康状态监测需要用.probe 来引入一段上下文配置,明确的说明怎么对后端做健康状态监测(或者用probe关键字+名称来引入一段公有的健康状态监测机制,后端多台主机可以用.probe +名称引用);比如请求后端主机的那个url或者用.request来指定向后端主机发送的请求的报文;对后端主机的响应多少次我们认为是健康的,监测频度,超时时长等等信息; 阅读全文
posted @ 2020-04-10 21:18 Linux-1874 阅读(170) 评论(0) 推荐(0) 编辑