mirror of
https://github.com/containers/podman.git
synced 2025-06-24 11:28:24 +08:00
Merge pull request #11445 from 1995parham/main
Add localhost into hosts based on network mode
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
//go:build linux
|
||||
// +build linux
|
||||
|
||||
package libpod
|
||||
@ -1942,9 +1943,24 @@ func (c *Container) generateHosts(path string) (string, error) {
|
||||
}
|
||||
hosts := string(orig)
|
||||
hosts += c.getHosts()
|
||||
|
||||
hosts = c.appendLocalhost(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
|
||||
// local hosts file. netCtr is the container from which the netNS information is
|
||||
// taken.
|
||||
|
@ -1,3 +1,4 @@
|
||||
//go:build linux
|
||||
// +build linux
|
||||
|
||||
package libpod
|
||||
@ -7,6 +8,7 @@ import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/containers/podman/v3/pkg/namespaces"
|
||||
spec "github.com/opencontainers/runtime-spec/specs-go"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
@ -68,3 +70,30 @@ func TestGenerateUserGroupEntry(t *testing.T) {
|
||||
}
|
||||
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"))
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user