mirror of
https://github.com/containers/podman.git
synced 2025-08-06 19:44:14 +08:00
Add dns search domains from cni response to resolv.conf
This fixes slow local host name lookups. see containers/dnsname#57 Signed-off-by: Paul Holzinger <paul.holzinger@web.de>
This commit is contained in:
@ -1715,6 +1715,7 @@ func (c *Container) generateResolvConf() (string, error) {
|
|||||||
var (
|
var (
|
||||||
nameservers []string
|
nameservers []string
|
||||||
cniNameServers []string
|
cniNameServers []string
|
||||||
|
cniSearchDomains []string
|
||||||
)
|
)
|
||||||
|
|
||||||
resolvConf := "/etc/resolv.conf"
|
resolvConf := "/etc/resolv.conf"
|
||||||
@ -1766,6 +1767,10 @@ func (c *Container) generateResolvConf() (string, error) {
|
|||||||
cniNameServers = append(cniNameServers, i.DNS.Nameservers...)
|
cniNameServers = append(cniNameServers, i.DNS.Nameservers...)
|
||||||
logrus.Debugf("adding nameserver(s) from cni response of '%q'", i.DNS.Nameservers)
|
logrus.Debugf("adding nameserver(s) from cni response of '%q'", i.DNS.Nameservers)
|
||||||
}
|
}
|
||||||
|
if i.DNS.Search != nil {
|
||||||
|
cniSearchDomains = append(cniSearchDomains, i.DNS.Search...)
|
||||||
|
logrus.Debugf("adding search domain(s) from cni response of '%q'", i.DNS.Search)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dns := make([]net.IP, 0, len(c.runtime.config.Containers.DNSServers))
|
dns := make([]net.IP, 0, len(c.runtime.config.Containers.DNSServers))
|
||||||
@ -1797,10 +1802,11 @@ func (c *Container) generateResolvConf() (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var search []string
|
var search []string
|
||||||
if len(c.config.DNSSearch) > 0 || len(c.runtime.config.Containers.DNSSearches) > 0 {
|
if len(c.config.DNSSearch) > 0 || len(c.runtime.config.Containers.DNSSearches) > 0 || len(cniSearchDomains) > 0 {
|
||||||
if !util.StringInSlice(".", c.config.DNSSearch) {
|
if !util.StringInSlice(".", c.config.DNSSearch) {
|
||||||
search = c.runtime.config.Containers.DNSSearches
|
search = c.runtime.config.Containers.DNSSearches
|
||||||
search = append(search, c.config.DNSSearch...)
|
search = append(search, c.config.DNSSearch...)
|
||||||
|
search = append(search, cniSearchDomains...)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
search = resolvconf.GetSearchDomains(resolv.Content)
|
search = resolvconf.GetSearchDomains(resolv.Content)
|
||||||
|
@ -766,4 +766,18 @@ var _ = Describe("Podman run networking", func() {
|
|||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(BeZero())
|
Expect(session.ExitCode()).To(BeZero())
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("podman run check dnsname adds dns search domain", func() {
|
||||||
|
Skip("needs dnsname#57")
|
||||||
|
net := "dnsname" + stringid.GenerateNonCryptoID()
|
||||||
|
session := podmanTest.Podman([]string{"network", "create", net})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
defer podmanTest.removeCNINetwork(net)
|
||||||
|
Expect(session.ExitCode()).To(BeZero())
|
||||||
|
|
||||||
|
session = podmanTest.Podman([]string{"run", "--network", net, ALPINE, "cat", "/etc/resolv.conf"})
|
||||||
|
session.WaitWithDefaultTimeout()
|
||||||
|
Expect(session.ExitCode()).To(BeZero())
|
||||||
|
Expect(session.OutputToString()).To(ContainSubstring("search dns.podman"))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user