summaryrefslogtreecommitdiff
path: root/libpod
diff options
context:
space:
mode:
authorbaude <bbaude@redhat.com>2018-01-20 11:07:35 -0600
committerAtomic Bot <atomic-devel@projectatomic.io>2018-01-21 17:24:49 +0000
commit5c3e4cfa62452b9cd5c2c08bf081ab524ded1cb4 (patch)
treed259c5a6c689141a43fd4f9249b4aa7697d4e320 /libpod
parent946b4ced544e5988a971da12c7e34a684ab0e39d (diff)
downloadpodman-5c3e4cfa62452b9cd5c2c08bf081ab524ded1cb4.tar.gz
podman-5c3e4cfa62452b9cd5c2c08bf081ab524ded1cb4.tar.bz2
podman-5c3e4cfa62452b9cd5c2c08bf081ab524ded1cb4.zip
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
Diffstat (limited to 'libpod')
-rw-r--r--libpod/container_api.go20
-rw-r--r--libpod/container_internal.go5
2 files changed, 25 insertions, 0 deletions
diff --git a/libpod/container_api.go b/libpod/container_api.go
index be7fd76bc..2b3c83eb2 100644
--- a/libpod/container_api.go
+++ b/libpod/container_api.go
@@ -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 {
diff --git a/libpod/container_internal.go b/libpod/container_internal.go
index c052f61fe..9b785bfa5 100644
--- a/libpod/container_internal.go
+++ b/libpod/container_internal.go
@@ -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)
+}