Merge pull request #11445 from 1995parham/main

Add localhost into hosts based on network mode
This commit is contained in:
OpenShift Merge Robot
2021-09-05 17:43:29 +02:00
committed by GitHub
2 changed files with 45 additions and 0 deletions

View File

@ -1,3 +1,4 @@
//go:build linux
// +build linux // +build linux
package libpod package libpod
@ -1942,9 +1943,24 @@ func (c *Container) generateHosts(path string) (string, error) {
} }
hosts := string(orig) hosts := string(orig)
hosts += c.getHosts() hosts += c.getHosts()
hosts = c.appendLocalhost(hosts)
return c.writeStringToRundir("hosts", hosts) return c.writeStringToRundir("hosts", hosts)
} }
// based on networking mode we may want to append the localhost
// if there isn't any record for it and also this shoud happen
// in slirp4netns and similar network modes.
func (c *Container) appendLocalhost(hosts string) string {
if !strings.Contains(hosts, "localhost") &&
!c.config.NetMode.IsHost() {
hosts += "127.0.0.1\tlocalhost\n::1\tlocalhost\n"
}
return hosts
}
// appendHosts appends a container's config and state pertaining to hosts to a container's // appendHosts appends a container's config and state pertaining to hosts to a container's
// local hosts file. netCtr is the container from which the netNS information is // local hosts file. netCtr is the container from which the netNS information is
// taken. // taken.

View File

@ -1,3 +1,4 @@
//go:build linux
// +build linux // +build linux
package libpod package libpod
@ -7,6 +8,7 @@ import (
"os" "os"
"testing" "testing"
"github.com/containers/podman/v3/pkg/namespaces"
spec "github.com/opencontainers/runtime-spec/specs-go" spec "github.com/opencontainers/runtime-spec/specs-go"
"github.com/stretchr/testify/assert" "github.com/stretchr/testify/assert"
) )
@ -68,3 +70,30 @@ func TestGenerateUserGroupEntry(t *testing.T) {
} }
assert.Equal(t, group, "567:x:567:567\n") assert.Equal(t, group, "567:x:567:567\n")
} }
func TestAppendLocalhost(t *testing.T) {
{
c := Container{
config: &ContainerConfig{
ContainerNetworkConfig: ContainerNetworkConfig{
NetMode: namespaces.NetworkMode("slirp4netns"),
},
},
}
assert.Equal(t, "127.0.0.1\tlocalhost\n::1\tlocalhost\n", c.appendLocalhost(""))
assert.Equal(t, "127.0.0.1\tlocalhost", c.appendLocalhost("127.0.0.1\tlocalhost"))
}
{
c := Container{
config: &ContainerConfig{
ContainerNetworkConfig: ContainerNetworkConfig{
NetMode: namespaces.NetworkMode("host"),
},
},
}
assert.Equal(t, "", c.appendLocalhost(""))
assert.Equal(t, "127.0.0.1\tlocalhost", c.appendLocalhost("127.0.0.1\tlocalhost"))
}
}