CNM Attribute
Options 提供了一种通用灵活的机制,可以让用户直接向Driver传递特定的配置选项。Option其实只是一些key-value pair,其中key由一个字符串表示,value由一个generic object表示(例如go中的intece{})。Libnetwork只有在Option中的key和net-labels包中已知的Label匹配是才对它进行操作。docker libnetwork同时Options也包含了下面要描述的Labels。通常,Options对于用户是不可见的,但是Labels可以。
Labels和Options非常类似,事实上,它是Options的一个子集。Labels对于用户是可见的,可以在UI中呈现通过使用--labels选项。它们从UI传递到Driver,从而Driver能够使用它并且执行一些特定的操作(例如从一个Network中申请IP地址)
CNM Lifecycle
CNM的用户通过与CNM的Object以及API的交互来管理对应容器的网络。
Driver要向NetworkController注册。内置的Driver在Libnetwork内注册,远程的Driver则通过Plugin mechanism注册。每一个Driver处理特定的networkType。
NetworkController通过libnetwork.New()创建,用于Network的创建以及通过一些特定的Options配置Driver。
Network通过给controller的NewNetwork()API提供name和networkType来创建。networkType参数用来选择特定的Driver并且将创建的Network和该Driver相关联。docker libnetwork从此以后,对于Network的任何操作都由Driver处理。
controller.NewNetwork()还有一个可选的options参数,用于提供特定Driver的options和Labels。
network.CreateEndpoint()可以用于在给定的Network中创建一个新的Endpoint。同时该API还有一个可选的options参数供Driver使用。这个"options"既可以携带已知的labels,也可以携带和特定Driver相关的labels。之后调用相应的Driver的driver.CreateEndpoint,它可以为在一个Endpoint在Network中被创建时,为它们保留IP地址。Driver会通过driverapi中定义的InteceInfo进行这些地址的赋值。IP地址将和endpoint暴露的端口用来完善Endpoint作为Service的定义。事实上,Service endpoint不是其他什么东西,仅仅只是一个网络地址以及该应用的容器的端口号。
endpoint.Join()用于将Endpoint与一个容器相连接。Join操作会先创建一个Sandbox如果对应的容器中还没有的话。Driver可以使用Sandbox Key来识别连接到同一个容器的多个Endpoint。这个API同样接受可选的options参数供Driver使用。
虽然这并不是Libnetwork直接的设计要求,但是我们鼓励像Docker这样的用户在执行容器的Start()操作时,即在容器可以操作之前,调用endpoint.Join()。
另一个关于endpoint.join()这个API经常被提到的问题是,为什么我们需要一个API创建Endpoint和另一个API来join endpoint。事实上Endpoint代表的是一个Service,它可能有,也可能并没有容器支持。当一个Endpoint被创建的时候,会预留它所需的资源,因此任何容器都能连接该Endpoint并且获得一个一致的网络行为。
endpoint.Leave()会在容器停止的时候被调用。Driver可以清除它在调用Join()时获取的状态。Libnetwork会在最后一个Endpoint离开的时候删除Sandbox。但是只要该Endpoint依旧存在,Libnetwork会依然保有IP地址并且在有新的容器加入的时候进行重用。这保证了容器的资源在停止并重启的过程中能够重用。
endpoint.Delete()用于从一个Network中删除Endpoint。这将导致Endpoint的删除以及清空缓存的sandbox.Info
network.Delete()用于删除Network。如果还有Endpoint连接到该网络,Libnetwork是不允许对它进行删除的。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-40290-2.html
放银行多少还有点收益
只要苍蝇接触过就有可能有蛆
和男朋友走在街上