MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / ContainerInfo

Method ContainerInfo

agent/app/service/container.go:558–633  ·  view source on GitHub ↗
(req dto.OperationWithName)

Source from the content-addressed store, hash-verified

556}
557
558func (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

Callers

nothing calls this directly

Calls 4

loadPortByInspectFunction · 0.85
loadContainerPortForInfoFunction · 0.85
loadVolumeBindsFunction · 0.85
CloseMethod · 0.65

Tested by

no test coverage detected