本文整理汇总了Golang中github.com/fsouza/go-dockerclient.Client.ListContainers方法的典型用法代码示例。如果您正苦于以下问题:Golang Client.ListContainers方法的具体用法?Golang Client.ListContainers怎么用?Golang Client.ListContainers使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/fsouza/go-dockerclient.Client
的用法示例。
在下文中一共展示了Client.ListContainers方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: fetchDockerContainer
func fetchDockerContainer(name string, client *dc.Client) (*dc.APIContainers, error) {
apiContainers, err := client.ListContainers(dc.ListContainersOptions{All: true})
if err != nil {
return nil, fmt.Errorf("Error fetching container information from Docker: %s\n", err)
}
for _, apiContainer := range apiContainers {
// Sometimes the Docker API prefixes container names with /
// like it does in these commands. But if there's no
// set name, it just uses the ID without a /...ugh.
switch len(apiContainer.Names) {
case 0:
if apiContainer.ID == name {
return &apiContainer, nil
}
default:
for _, containerName := range apiContainer.Names {
if strings.TrimLeft(containerName, "/") == name {
return &apiContainer, nil
}
}
}
}
return nil, nil
}
示例2: GetContainerNum
// GetContainerNum returns container number in the system
func GetContainerNum(client *docker.Client, all bool) int {
containers, err := client.ListContainers(docker.ListContainersOptions{All: all})
if err != nil {
panic(fmt.Sprintf("Error list containers: %v", err))
}
return len(containers)
}
示例3: fetchDockerContainer
func fetchDockerContainer(name string, client *dc.Client) (*dc.APIContainers, error) {
apiContainers, err := client.ListContainers(dc.ListContainersOptions{All: true})
if err != nil {
return nil, fmt.Errorf("Error fetching container information from Docker: %s\n", err)
}
for _, apiContainer := range apiContainers {
// Sometimes the Docker API prefixes container names with /
// like it does in these commands. But if there's no
// set name, it just uses the ID without a /...ugh.
var dockerContainerName string
if len(apiContainer.Names) > 0 {
dockerContainerName = strings.TrimLeft(apiContainer.Names[0], "/")
} else {
dockerContainerName = apiContainer.ID
}
if dockerContainerName == name {
return &apiContainer, nil
}
}
return nil, nil
}
示例4: cleanDuplicateContainer
func cleanDuplicateContainer(client *docker.Client, project Project) error {
containers, err := client.ListContainers(docker.ListContainersOptions{All: true})
if err != nil {
return err
}
for _, container := range containers {
names := container.Names
if len(names) > 0 && project.Name == strings.TrimLeft(names[0], "/") {
if strings.Contains(container.Status, "Up") {
fmt.Println("stopping", project.Name)
if err := client.KillContainer(docker.KillContainerOptions{ID: container.ID}); err != nil {
fmt.Println("could not stop container")
return err
}
}
if err := client.RemoveContainer(docker.RemoveContainerOptions{
ID: container.ID,
}); err != nil {
fmt.Println("could not remove container", err.Error())
return err
}
fmt.Println("removed duplicate container")
break
}
}
return nil
}
示例5: DoListContainerBenchmark
func DoListContainerBenchmark(client *docker.Client, interval, testPeriod time.Duration, all bool, stopchan chan int) []int {
startTime := time.Now()
latencies := []int{}
for {
start := time.Now()
client.ListContainers(docker.ListContainersOptions{All: all})
end := time.Now()
latencies = append(latencies, int(end.Sub(start).Nanoseconds()))
if stopchan == nil {
if time.Now().Sub(startTime) >= testPeriod {
return latencies
}
} else {
select {
case <-stopchan:
return latencies
default:
}
}
if interval != 0 {
time.Sleep(interval)
}
}
return latencies
}
示例6: getContainers
func getContainers(client *docker.Client) []*docker.Container {
allContainers, _ := client.ListContainers(docker.ListContainersOptions{All: false})
var containers []*docker.Container
for _, c := range allContainers {
container, _ := client.InspectContainer(c.ID)
containers = append(containers, container)
}
return containers
}
示例7: GetContainerIDs
// GetContainerIDs returns all the container ids in the system
func GetContainerIDs(client *docker.Client) (containerIDs []string) {
containers, err := client.ListContainers(docker.ListContainersOptions{All: true})
if err != nil {
panic(fmt.Sprintf("Error list containers: %v", err))
}
for _, container := range containers {
containerIDs = append(containerIDs, container.ID)
}
return containerIDs
}
示例8: getContainers
func getContainers(client *docker.Client) ([]*RuntimeContainer, error) {
apiContainers, err := client.ListContainers(docker.ListContainersOptions{
All: false,
Size: false,
})
if err != nil {
return nil, err
}
containers := []*RuntimeContainer{}
for _, apiContainer := range apiContainers {
container, err := client.InspectContainer(apiContainer.ID)
if err != nil {
log.Printf("error inspecting container: %s: %s\n", apiContainer.ID, err)
continue
}
registry, repository, tag := splitDockerImage(container.Config.Image)
runtimeContainer := &RuntimeContainer{
ID: container.ID,
Image: DockerImage{
Registry: registry,
Repository: repository,
Tag: tag,
},
Name: strings.TrimLeft(container.Name, "/"),
Gateway: container.NetworkSettings.Gateway,
Addresses: []Address{},
Env: make(map[string]string),
}
for k, v := range container.NetworkSettings.Ports {
address := Address{
IP: container.NetworkSettings.IPAddress,
Port: k.Port(),
}
if len(v) > 0 {
address.HostPort = v[0].HostPort
}
runtimeContainer.Addresses = append(runtimeContainer.Addresses,
address)
}
for _, entry := range container.Config.Env {
parts := strings.Split(entry, "=")
runtimeContainer.Env[parts[0]] = parts[1]
}
containers = append(containers, runtimeContainer)
}
return containers, nil
}
示例9: GetContainerByName
// GetContainerByName looks up the hosts containers with the specified name and
// returns it, or an error.
func GetContainerByName(client *dockerclient.Client, name string) (*dockerclient.APIContainers, error) {
containers, err := client.ListContainers(dockerclient.ListContainersOptions{All: true, Filters: NAME.Eq(name)})
if err != nil {
return nil, err
}
if len(containers) == 0 {
return nil, nil
}
return &containers[0], nil
}
示例10: GetContainersByFilter
// GetContainersByFilter looks up the hosts containers with the specified filters and
// returns a list of container matching it, or an error.
func GetContainersByFilter(client *dockerclient.Client, filters ...map[string][]string) ([]dockerclient.APIContainers, error) {
var filterResult map[string][]string
for _, filter := range filters {
if filterResult == nil {
filterResult = filter
} else {
filterResult = And(filterResult, filter)
}
}
return client.ListContainers(dockerclient.ListContainersOptions{All: true, Filters: filterResult})
}
示例11: GetContainerByID
// GetContainerByID looks up the hosts containers with the specified Id and
// returns it, or an error.
func GetContainerByID(client *dockerclient.Client, id string) (*dockerclient.APIContainers, error) {
containers, err := client.ListContainers(
dockerclient.ListContainersOptions{All: true, Filters: map[string][]string{"id": {id}}})
if err != nil {
return nil, err
}
if len(containers) == 0 {
return nil, nil
}
return &containers[0], nil
}
示例12: fetchDockerContainer
func fetchDockerContainer(ID string, client *dc.Client) (*dc.APIContainers, error) {
apiContainers, err := client.ListContainers(dc.ListContainersOptions{All: true})
if err != nil {
return nil, fmt.Errorf("Error fetching container information from Docker: %s\n", err)
}
for _, apiContainer := range apiContainers {
if apiContainer.ID == ID {
return &apiContainer, nil
}
}
return nil, nil
}
示例13: DoListContainerBenchmark
// DoListContainerBenchmark does periodically ListContainers with specific interval, returns latencies of
// all the calls in nanoseconds
func DoListContainerBenchmark(client *docker.Client, interval, testPeriod time.Duration, listAll bool) []int {
startTime := time.Now()
latencies := []int{}
for {
start := time.Now()
client.ListContainers(docker.ListContainersOptions{All: listAll})
latencies = append(latencies, int(time.Since(start).Nanoseconds()))
if time.Now().Sub(startTime) >= testPeriod {
return latencies
}
if interval != 0 {
time.Sleep(interval)
}
}
return latencies
}
示例14: getByLabel
func getByLabel(client *dockerClient.Client, key, value string) (*dockerClient.APIContainers, error) {
containers, err := client.ListContainers(dockerClient.ListContainersOptions{
All: true,
Filters: map[string][]string{
config.LABEL: {fmt.Sprintf("%s=%s", key, value)},
},
})
if err != nil {
return nil, err
}
if len(containers) == 0 {
return nil, nil
}
sort.Sort(ByCreated(containers))
return &containers[0], nil
}
示例15: getExistingContainers
// getExistingContainers получает от докера все запущенные контейнеры и добавляет
// в ssh-сервер те, у кого есть ssh
func getExistingContainers(server *SSHServer, client *docker.Client) {
options := docker.ListContainersOptions{All: true}
containers, err := client.ListContainers(options)
if err != nil {
log.Fatalf("Failed to get list of containers: %v", err)
}
for _, c := range containers {
if len(c.Ports) == 0 {
continue
}
for _, port := range c.Ports {
// Если у контейнера есть 22 порт, то добавляем его в SSH-сервер
if port.PrivatePort == 22 {
log.Printf("Added %v: %s:%d\n", c.ID[:12], port.IP, port.PublicPort)
server.AddHost(c.ID, fmt.Sprintf("%s:%d", port.IP, port.PublicPort))
}
}
}
}