func (container *Container) buildHostsFiles(IP string) error { hostsPath, err := container.getRootResourcePath("hosts") if err != nil { return err } container.HostsPath = hostsPath var extraContent []etchosts.Record children, err := container.daemon.Children(container.Name) if err != nil { return err } for linkAlias, child := range children { _, alias := path.Split(linkAlias) // allow access to the linked container via the alias, real name, and container hostname aliasList := alias + " " + child.Config.Hostname // only add the name if alias isn't equal to the name if alias != child.Name[1:] { aliasList = aliasList + " " + child.Name[1:] } extraContent = append(extraContent, etchosts.Record{Hosts: aliasList, IP: child.NetworkSettings.IPAddress}) } for _, extraHost := range container.hostConfig.ExtraHosts { // allow IPv6 addresses in extra hosts; only split on first ":" parts := strings.SplitN(extraHost, ":", 2) extraContent = append(extraContent, etchosts.Record{Hosts: parts[0], IP: parts[1]}) } return etchosts.Build(container.HostsPath, IP, container.Config.Hostname, container.Config.Domainname, extraContent) }
func (container *Container) buildHostnameAndHostsFiles(IP string) error { if err := container.buildHostnameFile(); err != nil { return err } hostsPath, err := container.getRootResourcePath("hosts") if err != nil { return err } container.HostsPath = hostsPath extraContent := make(map[string]string) children, err := container.daemon.Children(container.Name) if err != nil { return err } for linkAlias, child := range children { _, alias := path.Split(linkAlias) extraContent[alias] = child.NetworkSettings.IPAddress } return etchosts.Build(container.HostsPath, IP, container.Config.Hostname, container.Config.Domainname, &extraContent) }
func (container *Container) buildHostsFiles(IP string) error { hostsPath, err := container.getRootResourcePath("hosts") if err != nil { return err } container.HostsPath = hostsPath var extraContent []etchosts.Record children, err := container.daemon.Children(container.Name) if err != nil { return err } for linkAlias, child := range children { _, alias := path.Split(linkAlias) extraContent = append(extraContent, etchosts.Record{Hosts: alias, IP: child.NetworkSettings.IPAddress}) } for _, extraHost := range container.hostConfig.ExtraHosts { parts := strings.Split(extraHost, ":") extraContent = append(extraContent, etchosts.Record{Hosts: parts[0], IP: parts[1]}) } return etchosts.Build(container.HostsPath, IP, container.Config.Hostname, container.Config.Domainname, extraContent) }