(req dto.OperationWithName)
| 556 | } |
| 557 | |
| 558 | func (u *ContainerService) ContainerInfo(req dto.OperationWithName) (*dto.ContainerOperate, error) { |
| 559 | client, err := docker.NewDockerClient() |
| 560 | if err != nil { |
| 561 | return nil, err |
| 562 | } |
| 563 | defer client.Close() |
| 564 | ctx := context.Background() |
| 565 | oldContainer, err := client.ContainerInspect(ctx, req.Name) |
| 566 | if err != nil { |
| 567 | return nil, err |
| 568 | } |
| 569 | |
| 570 | var data dto.ContainerOperate |
| 571 | data.Name = strings.ReplaceAll(oldContainer.Name, "/", "") |
| 572 | data.Image = oldContainer.Config.Image |
| 573 | if oldContainer.NetworkSettings != nil { |
| 574 | for net, val := range oldContainer.NetworkSettings.Networks { |
| 575 | netItem := dto.ContainerNetwork{ |
| 576 | Network: net, |
| 577 | MacAddr: val.MacAddress, |
| 578 | } |
| 579 | if val.IPAMConfig != nil { |
| 580 | if netItem.Network != "bridge" { |
| 581 | netItem.Ipv4 = val.IPAMConfig.IPv4Address |
| 582 | netItem.Ipv6 = val.IPAMConfig.IPv6Address |
| 583 | } |
| 584 | } else { |
| 585 | if netItem.Network != "bridge" { |
| 586 | netItem.Ipv4 = val.IPAddress |
| 587 | } |
| 588 | } |
| 589 | data.Networks = append(data.Networks, netItem) |
| 590 | } |
| 591 | } |
| 592 | |
| 593 | exposePorts, _ := loadPortByInspect(oldContainer.ID, client) |
| 594 | data.ExposedPorts = loadContainerPortForInfo(exposePorts) |
| 595 | data.Hostname = oldContainer.Config.Hostname |
| 596 | data.DNS = oldContainer.HostConfig.DNS |
| 597 | for _, item := range oldContainer.HostConfig.ExtraHosts { |
| 598 | parts := strings.SplitN(item, ":", 2) |
| 599 | if len(parts) != 2 || len(parts[0]) == 0 || len(parts[1]) == 0 { |
| 600 | continue |
| 601 | } |
| 602 | data.ExtraHosts = append(data.ExtraHosts, dto.ExtraHost{ |
| 603 | Hostname: parts[0], |
| 604 | IP: parts[1], |
| 605 | }) |
| 606 | } |
| 607 | data.DomainName = oldContainer.Config.Domainname |
| 608 | |
| 609 | data.Cmd = oldContainer.Config.Cmd |
| 610 | data.WorkingDir = oldContainer.Config.WorkingDir |
| 611 | data.User = oldContainer.Config.User |
| 612 | data.OpenStdin = oldContainer.Config.OpenStdin |
| 613 | data.Tty = oldContainer.Config.Tty |
| 614 | data.Entrypoint = oldContainer.Config.Entrypoint |
| 615 | data.Env = oldContainer.Config.Env |
nothing calls this directly
no test coverage detected