pidmode_linux_test.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package container // import "github.com/docker/docker/integration/container"
  2. import (
  3. "context"
  4. "os"
  5. "testing"
  6. "time"
  7. "github.com/docker/docker/integration/internal/container"
  8. "gotest.tools/v3/assert"
  9. "gotest.tools/v3/poll"
  10. "gotest.tools/v3/skip"
  11. )
  12. func TestPidHost(t *testing.T) {
  13. skip.If(t, testEnv.DaemonInfo.OSType != "linux")
  14. skip.If(t, testEnv.IsRemoteDaemon())
  15. skip.If(t, testEnv.IsRootless, "https://github.com/moby/moby/issues/41457")
  16. hostPid, err := os.Readlink("/proc/1/ns/pid")
  17. assert.NilError(t, err)
  18. defer setupTest(t)()
  19. client := testEnv.APIClient()
  20. ctx := context.Background()
  21. cID := container.Run(ctx, t, client, func(c *container.TestContainerConfig) {
  22. c.HostConfig.PidMode = "host"
  23. })
  24. poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
  25. cPid := container.GetContainerNS(ctx, t, client, cID, "pid")
  26. assert.Assert(t, hostPid == cPid)
  27. cID = container.Run(ctx, t, client)
  28. poll.WaitOn(t, container.IsInState(ctx, client, cID, "running"), poll.WithDelay(100*time.Millisecond))
  29. cPid = container.GetContainerNS(ctx, t, client, cID, "pid")
  30. assert.Assert(t, hostPid != cPid)
  31. }