Browse Source

Container: Always create a new session for the container

We never want the container to be in the same process group as the
daemon, as then the container will receive signals sent to the
process group of the container.
Alexander Larsson 11 năm trước cách đây
mục cha
commit
c1c74cb0b1
1 tập tin đã thay đổi với 3 bổ sung1 xóa
  1. 3 1
      container.go

+ 3 - 1
container.go

@@ -393,7 +393,7 @@ func (container *Container) startPty() error {
 	// stdin
 	// stdin
 	if container.Config.OpenStdin {
 	if container.Config.OpenStdin {
 		container.cmd.Stdin = ptySlave
 		container.cmd.Stdin = ptySlave
-		container.cmd.SysProcAttr = &syscall.SysProcAttr{Setctty: true, Setsid: true}
+		container.cmd.SysProcAttr.Setctty = true
 		go func() {
 		go func() {
 			defer container.stdin.Close()
 			defer container.stdin.Close()
 			utils.Debugf("[startPty] Begin of stdin pipe")
 			utils.Debugf("[startPty] Begin of stdin pipe")
@@ -800,6 +800,8 @@ func (container *Container) Start(hostConfig *HostConfig) error {
 		return err
 		return err
 	}
 	}
 
 
+	container.cmd.SysProcAttr = &syscall.SysProcAttr{Setsid: true}
+
 	var err error
 	var err error
 	if container.Config.Tty {
 	if container.Config.Tty {
 		err = container.startPty()
 		err = container.startPty()