diff --git a/lxc_template.go b/lxc_template.go index 8e6c6ef1ea..a8e11967d1 100644 --- a/lxc_template.go +++ b/lxc_template.go @@ -6,13 +6,6 @@ import ( ) const LxcTemplate = ` -# hostname -{{if .Config.Hostname}} -lxc.utsname = {{.Config.Hostname}} -{{else}} -lxc.utsname = {{.Id}} -{{end}} - {{if .Config.NetworkDisabled}} # network is disabled (-n=false) lxc.network.type = empty diff --git a/lxc_template_unit_test.go b/lxc_template_unit_test.go index ccdfec8890..f71f1dd6f5 100644 --- a/lxc_template_unit_test.go +++ b/lxc_template_unit_test.go @@ -29,7 +29,6 @@ func TestLXCConfig(t *testing.T) { container := &Container{ root: root, Config: &Config{ - Hostname: "foobar", Memory: int64(mem), CpuShares: int64(cpu), NetworkDisabled: true, @@ -41,7 +40,6 @@ func TestLXCConfig(t *testing.T) { if err := container.generateLXCConfig(); err != nil { t.Fatal(err) } - grepFile(t, container.lxcConfigPath(), "lxc.utsname = foobar") grepFile(t, container.lxcConfigPath(), fmt.Sprintf("lxc.cgroup.memory.limit_in_bytes = %d", mem)) grepFile(t, container.lxcConfigPath(), diff --git a/sysinit/sysinit.go b/sysinit/sysinit.go index 220f446d62..d6ba3a5d83 100644 --- a/sysinit/sysinit.go +++ b/sysinit/sysinit.go @@ -26,6 +26,14 @@ type DockerInitArgs struct { args []string } +func setupHostname(args *DockerInitArgs) error { + hostname := getEnv(args, "HOSTNAME") + if hostname == "" { + return nil + } + return syscall.Sethostname([]byte(hostname)) +} + // Setup networking func setupNetworking(args *DockerInitArgs) error { if args.gateway == "" { @@ -132,9 +140,23 @@ func setupEnv(args *DockerInitArgs) { } } +func getEnv(args *DockerInitArgs, key string) string { + for _, kv := range args.env { + parts := strings.SplitN(kv, "=", 2) + if parts[0] == key && len(parts) == 2 { + return parts[1] + } + } + return "" +} + func executeProgram(args *DockerInitArgs) error { setupEnv(args) + if err := setupHostname(args); err != nil { + return err + } + if err := setupNetworking(args); err != nil { return err }