Now, when container is finished, NM firstly execute "docker rm xxx" to remove it and this thread is placed in DeletionService. see more in
Next, NM will execute "docker stop" and "docker kill" command. these tow commands are wrapped up in ContainerCleanup thread and executed by ContainersLauncher. see more in
The above will cause the container's cleanup to be split into two threads. I think we should refactor these code to make all docker container killing process be place in ContainerCleanup thread and "docker rm" should be executed last.