mirror of
https://github.com/containers/podman.git
synced 2025-08-06 03:19:52 +08:00
Merge pull request #20545 from giuseppe/fix-hostname-with-host-uts
libpod: fix /etc/hostname with --uts=host
This commit is contained in:
@ -686,6 +686,23 @@ func (c *Container) Hostname() string {
|
||||
return c.config.Spec.Hostname
|
||||
}
|
||||
|
||||
// if the container is not running in a private UTS namespace,
|
||||
// return the host's hostname.
|
||||
privateUTS := false
|
||||
if c.config.Spec.Linux != nil {
|
||||
for _, ns := range c.config.Spec.Linux.Namespaces {
|
||||
if ns.Type == spec.UTSNamespace {
|
||||
privateUTS = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if !privateUTS {
|
||||
hostname, err := os.Hostname()
|
||||
if err == nil {
|
||||
return hostname
|
||||
}
|
||||
}
|
||||
if len(c.ID()) < 11 {
|
||||
return c.ID()
|
||||
}
|
||||
|
@ -911,4 +911,15 @@ EOF
|
||||
run_podman network rm $net1
|
||||
}
|
||||
|
||||
# Issue #20448 - /etc/hostname with --uts=host must show "uname -n"
|
||||
@test "podman --uts=host must use 'uname -n' for /etc/hostname" {
|
||||
run_podman info --format '{{.Host.Hostname}}'
|
||||
hostname="$output"
|
||||
run_podman run --rm --uts=host $IMAGE cat /etc/hostname
|
||||
assert "$output" = $hostname "/etc/hostname with --uts=host must be equal to 'uname -n'"
|
||||
|
||||
run_podman run --rm --net=host --uts=host $IMAGE cat /etc/hostname
|
||||
assert "$output" = $hostname "/etc/hostname with --uts=host --net=host must be equal to 'uname -n'"
|
||||
}
|
||||
|
||||
# vim: filetype=sh
|
||||
|
Reference in New Issue
Block a user