// +build !windows package main import ( "net" "strings" "github.com/go-check/check" ) func (s *DockerSuite) TestPortHostBinding(c *check.C) { out, _ := dockerCmd(c, "run", "-d", "-p", "9876:80", "busybox", "nc", "-l", "-p", "80") firstID := strings.TrimSpace(out) out, _ = dockerCmd(c, "port", firstID, "80") if !assertPortList(c, out, []string{"0.0.0.0:9876"}) { c.Error("Port list is not correct") } dockerCmd(c, "run", "--net=host", "busybox", "nc", "localhost", "9876") dockerCmd(c, "rm", "-f", firstID) if _, _, err := dockerCmdWithError("run", "--net=host", "busybox", "nc", "localhost", "9876"); err == nil { c.Error("Port is still bound after the Container is removed") } } func (s *DockerSuite) TestPortExposeHostBinding(c *check.C) { out, _ := dockerCmd(c, "run", "-d", "-P", "--expose", "80", "busybox", "nc", "-l", "-p", "80") firstID := strings.TrimSpace(out) out, _ = dockerCmd(c, "port", firstID, "80") _, exposedPort, err := net.SplitHostPort(out) if err != nil { c.Fatal(out, err) } dockerCmd(c, "run", "--net=host", "busybox", "nc", "localhost", strings.TrimSpace(exposedPort)) dockerCmd(c, "rm", "-f", firstID) if _, _, err = dockerCmdWithError("run", "--net=host", "busybox", "nc", "localhost", strings.TrimSpace(exposedPort)); err == nil { c.Error("Port is still bound after the Container is removed") } }