소스 검색

Merge pull request #23473 from coolljt0725/fix_stop_crash

Fix shutdown daemon during daemon staring casue crash
Vincent Demeester 9 년 전
부모
커밋
d169f057d9
1개의 변경된 파일5개의 추가작업 그리고 6개의 파일을 삭제
  1. 5 6
      cmd/dockerd/daemon.go

+ 5 - 6
cmd/dockerd/daemon.go

@@ -127,11 +127,6 @@ func (cli *DaemonCli) start() (err error) {
 	stopc := make(chan bool)
 	stopc := make(chan bool)
 	defer close(stopc)
 	defer close(stopc)
 
 
-	signal.Trap(func() {
-		cli.stop()
-		<-stopc // wait for daemonCli.start() to return
-	})
-
 	// warn from uuid package when running the daemon
 	// warn from uuid package when running the daemon
 	uuid.Loggerf = logrus.Warnf
 	uuid.Loggerf = logrus.Warnf
 
 
@@ -258,6 +253,11 @@ func (cli *DaemonCli) start() (err error) {
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
+	cli.api = api
+	signal.Trap(func() {
+		cli.stop()
+		<-stopc // wait for daemonCli.start() to return
+	})
 
 
 	d, err := daemon.NewDaemon(cli.Config, registryService, containerdRemote)
 	d, err := daemon.NewDaemon(cli.Config, registryService, containerdRemote)
 	if err != nil {
 	if err != nil {
@@ -276,7 +276,6 @@ func (cli *DaemonCli) start() (err error) {
 	initRouter(api, d)
 	initRouter(api, d)
 
 
 	cli.d = d
 	cli.d = d
-	cli.api = api
 	cli.setupConfigReloadTrap()
 	cli.setupConfigReloadTrap()
 
 
 	// The serve API routine never exits unless an error occurs
 	// The serve API routine never exits unless an error occurs