Docker v1.12.3版本中有两个二进制文件,其中docker为客户端,dockerd为服务端,docker一般通过Unix socket访问本地dockerd,也可以通过网络访问其他主机上的dockerd(前提是其他主机上的dockerd对网络端口进行了监听)。本次分析就介绍dockerd如何启动server监听的。
Ingress是Kubernetes集群用来暴露内部服务给外部人使用的一种机制,目前。Ingress机制主要由两部分组成:Ingress规则和Ingress Controller。Ingress规则定义了服务的访问规则。在Kubernetes中,Ingress和Service之类的一样,是一个资源。Ingress中定义了具体路径到后端容器的对应关系。Ingress Controller就是对定义Ingress进行响应的组件。以Nginx-Controller举例,Nginx监听某一地址,Nginx-Controller读取Kubernetes中的Ingress,然后把Ingress中定义的信息翻译到Nginx配置文件中,从而达到访问Nginx就可访问内部容器服务的功能。这就是Ingress的用途,监听某一地址,把流量代理到后端的容器。
本次分析将介绍ResourceQuotaController。之前我们已经介绍过Kubernetes如何管理配额,但当发生删除操作时,无需经过比较配额,直接删除即可,或者,系统配额与实际情况不一致的情况,这些,都需要一种机制来矫,而这个机制就是ResourceQuotaController。
我们知道,runc是使用init进程作为容器内的第一个进程,来看下面代码:
我们知道runc是从spec文件,即config.json启动容器的,而Docker所做的事就是生成这份config.json。本次分析将介绍Docker如何生成config.json文件的,及config.json中主要字段的含义。
我们先来看Docker中容器启动函数containerStart(),定义在/daemon/start.go中: