When Docker was released to open source in 2013, there wasn’t any certainty it would be a success. Five years later, and most companies are using containers as a convenient standard way of packing applications. This has enabled consistency for both development and deployment, which is why containers are so important: you can build your packaged application on your development platform and deploy it anywhere that supports containers, like the public cloud.
However, containers are not enough on their own, once you start deploying multiple applications (e.g. microservices) and need a consistent way for discovery, recovery, deployment, autoscaling, security, etc. for your applications - you need a container orchestration layer to manage them. Until mid-2017, it looked like there would be many competing standards for container orchestration, but now Kubernetes, created by Google in mid-2014, has pretty much won.