mirror of
https://github.com/containers/podman.git
synced 2025-08-06 11:32:07 +08:00
Override hostname for container
Adds the ability to override the container's hostname. Also, uses the first twelve characters of the container ID as the default hostname if none is provided. Signed-off-by: baude <bbaude@redhat.com> Closes: #248 Approved by: baude
This commit is contained in:
@ -90,6 +90,18 @@ func (c *Container) Init() (err error) {
|
||||
return errors.Wrapf(err, "unable to copy /etc/hosts to container space")
|
||||
}
|
||||
|
||||
if c.Spec().Hostname == "" {
|
||||
id := c.ID()
|
||||
if len(c.ID()) > 11 {
|
||||
id = c.ID()[:12]
|
||||
}
|
||||
c.config.Spec.Hostname = id
|
||||
}
|
||||
runDirHostname, err := c.generateEtcHostname(c.config.Spec.Hostname)
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "unable to generate hostname file for container")
|
||||
}
|
||||
|
||||
// Save OCI spec to disk
|
||||
g := generate.NewFromSpec(c.config.Spec)
|
||||
// If network namespace was requested, add it now
|
||||
@ -122,6 +134,14 @@ func (c *Container) Init() (err error) {
|
||||
Options: []string{"rw", "bind"},
|
||||
}
|
||||
g.AddMount(hostsMnt)
|
||||
// Bind hostname
|
||||
hostnameMnt := spec.Mount{
|
||||
Type: "bind",
|
||||
Source: runDirHostname,
|
||||
Destination: "/etc/hostname",
|
||||
Options: []string{"rw", "bind"},
|
||||
}
|
||||
g.AddMount(hostnameMnt)
|
||||
|
||||
if c.config.User != "" {
|
||||
if !c.state.Mounted {
|
||||
|
@ -508,3 +508,8 @@ func (c *Container) generateHosts() (string, error) {
|
||||
}
|
||||
return c.WriteStringToRundir("hosts", hosts)
|
||||
}
|
||||
|
||||
// generateEtcHostname creates a containers /etc/hostname
|
||||
func (c *Container) generateEtcHostname(hostname string) (string, error) {
|
||||
return c.WriteStringToRundir("hostname", hostname)
|
||||
}
|
||||
|
Reference in New Issue
Block a user