In this chapter, we have introduced Docker volumes that can be used to persist states produced by containers and make it durable. We can also use volumes to provide containers with data originating from various sources. We have learned how to create, mount and use volumes. We have learned various techniques of defining volumes such as by name, by mounting a host directory, or by defining volumes in a container image.
In this chapter, we have also discussed various system-level commands that either provide us with abundant information to troubleshoot a system, or to manage and prune resources used by Docker. Lastly, we have learned how we can visualize and potentially consume the event stream generated by the container runtime.
In the next chapter, we are going to get an introduction into the fundamentals of container orchestration. There we're going to discuss what's needed when we have to manage and run not just one or a few containers but potentially hundreds of them on many nodes in a cluster. We will see that there are a lot of challenges to solve. This is where orchestration engines come into play.