mirror of
https://github.com/containers/podman.git
synced 2025-06-25 03:52:15 +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
|
// +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.
|
||||||
|
@ -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"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user