In this chapter, you have seen the isolation of containers using the Linux container technology, such as LXC and now Libcontainer. Libcontainer is Docker's own implementation in the Go programming language to access the kernel namespace and cgroups. This namespace is used for process-level isolation, while cgroups are used for restricting the resource usage of running containers. Since the containers run as independent processes directly over the Linux kernel, the Generally Available (GA) debugging tools are not fit enough to work inside the containers to debug the containerized processes. Docker now provides you with a rich set of tools to effectively debug the container as well as processes inside the container itself. The docker exec command will allow you to log in to the container without running an SSH daemon in the container. You have seen the details of each debugging tool in this chapter.
The...