Bladeren bron

Fix hostname missing when a container's net mode is contaienr mode

Signed-off-by: Lei Jitang <leijitang@huawei.com>
Lei Jitang 10 jaren geleden
bovenliggende
commit
74664dabff
2 gewijzigde bestanden met toevoegingen van 26 en 0 verwijderingen
  1. 1 0
      daemon/container.go
  2. 25 0
      integration-cli/docker_cli_run_test.go

+ 1 - 0
daemon/container.go

@@ -1222,6 +1222,7 @@ func (container *Container) initializeNetworking() error {
 		if err != nil {
 			return err
 		}
+		container.HostnamePath = nc.HostnamePath
 		container.HostsPath = nc.HostsPath
 		container.ResolvConfPath = nc.ResolvConfPath
 		container.Config.Hostname = nc.Config.Hostname

+ 25 - 0
integration-cli/docker_cli_run_test.go

@@ -412,6 +412,31 @@ func TestRunLinkToContainerNetMode(t *testing.T) {
 	logDone("run - link to a container which net mode is container success")
 }
 
+func TestRunModeNetContainerHostname(t *testing.T) {
+	defer deleteAllContainers()
+	cmd := exec.Command(dockerBinary, "run", "-i", "-d", "--name", "parent", "busybox", "top")
+	out, _, err := runCommandWithOutput(cmd)
+	if err != nil {
+		t.Fatalf("failed to run container: %v, output: %q", err, out)
+	}
+	cmd = exec.Command(dockerBinary, "exec", "parent", "cat", "/etc/hostname")
+	out, _, err = runCommandWithOutput(cmd)
+	if err != nil {
+		t.Fatalf("failed to exec command: %v, output: %q", err, out)
+	}
+
+	cmd = exec.Command(dockerBinary, "run", "--net=container:parent", "busybox", "cat", "/etc/hostname")
+	out1, _, err := runCommandWithOutput(cmd)
+	if err != nil {
+		t.Fatalf("failed to run container: %v, output: %q", err, out1)
+	}
+	if out1 != out {
+		t.Fatal("containers with shared net namespace should have same hostname")
+	}
+
+	logDone("run - containers with shared net namespace have same hostname")
+}
+
 // Regression test for #4741
 func TestRunWithVolumesAsFiles(t *testing.T) {
 	defer deleteAllContainers()