当前位置: 首页 > news >正文

深圳有没有什么网站/山西seo

深圳有没有什么网站,山西seo,快速排名优化系统,做外贸需要建英文网站吗通过docker的API或者docker event命令,我们都可以获取到容器生命周期内发生了那些事情。首先把结论放出来,然后在看实现过程。 这个是实验的结论,那我怎么获取到这些状态和事件的呢?很简单,就是通过上面的api watch…

通过docker的API或者docker event命令,我们都可以获取到容器生命周期内发生了那些事情。首先把结论放出来,然后在看实现过程。
这里写图片描述
这个是实验的结论,那我怎么获取到这些状态和事件的呢?很简单,就是通过上面的api watch。
通过docker go client很容易实现

func (w *watcher) watch() {filters := filters.NewArgs()filters.Add("type", "container")options := types.EventsOptions{Since:   fmt.Sprintf("%d", w.lastValidTimestamp),Filters: filters,}for {events, errors := w.client.Events(w.ctx, options)WATCH:for {select {case event := <-events:fmt.Printf("get event %v action %v \n",event.Actor.Attributes["name"],event.Action)logp.Debug("docker", "Got a new docker event: %v", event)w.lastValidTimestamp = event.Time// Add / updateif event.Action == "create" || event.Action == "update" {name := event.Actor.Attributes["name"]image := event.Actor.Attributes["image"]delete(event.Actor.Attributes, "name")delete(event.Actor.Attributes, "image")container := &Container{ID:     event.Actor.ID,Name:   name,Image:  image,Labels: event.Actor.Attributes,Env:    make(map[string]string),}info, err := w.client.ContainerInspect(w.ctx, event.Actor.ID)if err == nil {for _, env := range info.Config.Env {kv := strings.SplitN(env, "=", 2)if len(kv) >= 2 {container.Env[kv[0]] = kv[1]}}}w.containers[container.ID] = containerw.containers[container.Name] = container}// Deleteif event.Action == "die" || event.Action == "kill" {delete(w.containers, event.Actor.ID)delete(w.containers, event.Actor.Attributes["name"])}case err := <-errors:// Restart watch calllogp.Err("Error watching for docker events: %v", err)time.Sleep(1 * time.Second)break WATCHcase <-w.ctx.Done():logp.Debug("docker", "Watcher stopped")return}}}
}

这样当我们操作docker上的时候就能顺利的获取到它的状态,譬如一次docker run操作,

get event big_meninsky action create 
get event big_meninsky action start

相应的一次stop操作就可以获取到

get event big_meninsky action kill 
get event big_meninsky action kill 
get event big_meninsky action die 
get event big_meninsky action stop 

这里有个很有意思的事,就是怎么会有两次kill操作呢!那是因为,docker stop命令的玩法

docker stop: Stop a running container (send SIGTERM, and then SIGKILL after grace period)

就是先发现TERM信号(为了让容器优雅关闭),再发送KILL信号。所以收到两次kill event命令。这个和kill最大的区别,它是直接发送KILL信号,所以不会有两次kill event。

http://www.jmfq.cn/news/5092903.html

相关文章:

  • 建设公司网站的原则/百度关键词搜索排名查询
  • 做县城门户网站/搜索引擎优化技术有哪些
  • 如何做音乐分享类网站/简单的网站建设
  • 鞍山做网站/百度经验首页
  • 微信网站测试/网站统计哪个好用
  • 安亭做网站公司/seo主管招聘
  • 网站空间与域名的关系/发外链软件
  • 淮安做网站/网站seo好学吗
  • 官方网站建设的目标/技能培训有哪些科目
  • 用服务器ip做网站域名/百度问答平台
  • 政务咨询投诉举报网站建设/广州网络seo优化
  • wordpress电商网站/百度浏览器在线打开
  • 网站建设方案书制作流程/引流推广平台
  • 动态网站开发的集成软件有哪些/如何开网店
  • 深圳网站建设php/线下推广方式
  • 优秀的定制网站建设公司/网站优化技术
  • 我需要一个网站/网站建设策划方案
  • 北京给网站做系统的公司/下载百度卫星导航
  • 企业展厅设计内容/优化大师windows
  • 伍壹捌网站建设/制作网页
  • wordpress 内嵌网页/百度怎么优化网站排名
  • 专门做正品的网站手机版/网站快速被百度收录
  • 网站建设方案的企业/惠州seo网站推广
  • 网站建设包括网页设计/杭州seo论坛
  • 做电子网站/成都专门做网络推广的公司
  • 酒店网站开发协议/电商网站设计模板
  • 兰州网站建设公/福州seo排名优化公司
  • 东莞个人免费建网站/舆情分析系统
  • 融水做的比较好的网站有哪些/外链交易平台
  • 网站设计策划书 模板/网店推广方案范文