本文整理汇总了Golang中github.com/docker/engine-api/client.Client.ContainerList方法的典型用法代码示例。如果您正苦于以下问题:Golang Client.ContainerList方法的具体用法?Golang Client.ContainerList怎么用?Golang Client.ContainerList使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/docker/engine-api/client.Client
的用法示例。
在下文中一共展示了Client.ContainerList方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: discoverAndSync
// enumberates volumes and builds refCountsMap, then sync with mount info
func (r refCountsMap) discoverAndSync(c *client.Client, d *vmdkDriver) error {
// we assume to have empty refcounts. Let's enforce
for name := range r {
delete(r, name)
}
filters := filters.NewArgs()
filters.Add("status", "running")
filters.Add("status", "paused")
filters.Add("status", "restarting")
containers, err := c.ContainerList(context.Background(), types.ContainerListOptions{
All: true,
Filter: filters,
})
if err != nil {
return err
}
log.Debugf("Found %d running or paused containers", len(containers))
for _, ct := range containers {
containerJSONInfo, err := c.ContainerInspect(context.Background(), ct.ID)
if err != nil {
log.Errorf("ContainerInspect failed for %s (err: %v)", ct.Names, err)
continue
}
log.Debugf(" Mounts for %v", ct.Names)
for _, mount := range containerJSONInfo.Mounts {
if mount.Driver == driverName {
r.incr(mount.Name)
log.Debugf(" name=%v (driver=%s source=%s)",
mount.Name, mount.Driver, mount.Source)
}
}
}
// Check that refcounts and actual mount info from Linux match
// If they don't, unmount unneeded stuff, or yell if something is
// not mounted but should be (it's error. we should not get there)
r.getMountInfo()
r.syncMountsWithRefCounters(d)
return nil
}