diff --git a/daemon/container_operations_unix.go b/daemon/container_operations_unix.go index 6fe3c22714..1a54566dad 100644 --- a/daemon/container_operations_unix.go +++ b/daemon/container_operations_unix.go @@ -975,6 +975,9 @@ func (daemon *Daemon) getIpcContainer(container *container.Container) (*containe if !c.IsRunning() { return nil, derr.ErrorCodeIPCRunning.WithArgs(containerID) } + if c.IsRestarting() { + return nil, derr.ErrorCodeContainerRestarting.WithArgs(containerID) + } return c, nil } @@ -989,6 +992,9 @@ func (daemon *Daemon) getNetworkedContainer(containerID, connectedContainerID st if !nc.IsRunning() { return nil, derr.ErrorCodeJoinRunning.WithArgs(connectedContainerID) } + if nc.IsRestarting() { + return nil, derr.ErrorCodeContainerRestarting.WithArgs(connectedContainerID) + } return nc, nil } diff --git a/errors/daemon.go b/errors/daemon.go index 17022ce897..1075449d2d 100644 --- a/errors/daemon.go +++ b/errors/daemon.go @@ -226,12 +226,12 @@ var ( }) // ErrorCodeIPCRunning is generated when we try to join a container's - // IPC but its not running. + // IPC but it's not running. ErrorCodeIPCRunning = errcode.Register(errGroup, errcode.ErrorDescriptor{ Value: "IPCRUNNING", Message: "cannot join IPC of a non running container: %s", Description: "An attempt was made to join the IPC of a container, but the container is not running", - HTTPStatusCode: http.StatusInternalServerError, + HTTPStatusCode: http.StatusConflict, }) // ErrorCodeNotADir is generated when we try to create a directory @@ -265,7 +265,7 @@ var ( Value: "JOINRUNNING", Message: "cannot join network of a non running container: %s", Description: "An attempt to join the network of a container, but that container isn't running", - HTTPStatusCode: http.StatusInternalServerError, + HTTPStatusCode: http.StatusConflict, }) // ErrorCodeModeNotContainer is generated when we try to network to