docker_cli_port_unix_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. // +build !windows
  2. package main
  3. import (
  4. "net"
  5. "strings"
  6. "github.com/go-check/check"
  7. )
  8. func (s *DockerSuite) TestPortHostBinding(c *check.C) {
  9. out, _ := dockerCmd(c, "run", "-d", "-p", "9876:80", "busybox",
  10. "nc", "-l", "-p", "80")
  11. firstID := strings.TrimSpace(out)
  12. out, _ = dockerCmd(c, "port", firstID, "80")
  13. if !assertPortList(c, out, []string{"0.0.0.0:9876"}) {
  14. c.Error("Port list is not correct")
  15. }
  16. dockerCmd(c, "run", "--net=host", "busybox",
  17. "nc", "localhost", "9876")
  18. dockerCmd(c, "rm", "-f", firstID)
  19. if _, _, err := dockerCmdWithError(c, "run", "--net=host", "busybox",
  20. "nc", "localhost", "9876"); err == nil {
  21. c.Error("Port is still bound after the Container is removed")
  22. }
  23. }
  24. func (s *DockerSuite) TestPortExposeHostBinding(c *check.C) {
  25. out, _ := dockerCmd(c, "run", "-d", "-P", "--expose", "80", "busybox",
  26. "nc", "-l", "-p", "80")
  27. firstID := strings.TrimSpace(out)
  28. out, _ = dockerCmd(c, "port", firstID, "80")
  29. _, exposedPort, err := net.SplitHostPort(out)
  30. if err != nil {
  31. c.Fatal(out, err)
  32. }
  33. dockerCmd(c, "run", "--net=host", "busybox",
  34. "nc", "localhost", strings.TrimSpace(exposedPort))
  35. dockerCmd(c, "rm", "-f", firstID)
  36. if _, _, err = dockerCmdWithError(c, "run", "--net=host", "busybox",
  37. "nc", "localhost", strings.TrimSpace(exposedPort)); err == nil {
  38. c.Error("Port is still bound after the Container is removed")
  39. }
  40. }