At their core, Docker containers are just a new way to deploy applications. But their implications for the software world extend much further than just application deployment. Here’s how Docker changes monitoring, storage, security and more.
Docker has become famous as a new type of building-block for application infrastructure. Instead of using bare-metal servers or virtual machines to deploy your apps, you can use Docker.
But if you think Docker’s significance ends with application deployment, think again. Docker is redefining the entire approach that developers and admins must take to all parts of their jobs.
Thanks to Docker, Everything You Know Is Wrong
How? Consider the following ways in which Docker changes the game when it comes to the tasks and processes that go into running and managing software.
- Monitoring: You can’t do performance monitoring for Docker containers in the same way that you monitor traditional applications. With Docker, individual containers and even servers can go up and down without affecting application health. That’s because the applications are composed of microservices that are distributed across a cluster of servers and composed using hundreds or thousands of containers. This means that the tools and strategies admins have traditionally used for application performance monitoring don’t necessarily get the job done in a Docker environment.
- Storage: With Docker, your data no longer lives in the same environment as your application. Instead, in most cases, it’s consigned to a scale-out storage system or mapped onto storage directories on the cluster of host servers. As a result, conventional data storage and backup tools need to be redesigned to fit a Docker environment.
- Security: Docker creates a host of new security challenges. With containers, you have more objects to secure, from the Docker daemon and registry to applications themselves. Your security tools need to adapt to look inside container images and running containers.
- Delivery chains: Part of Docker’s appeal is that it simplifies software delivery chains by providing environment parity and obviating the need to deploy an app for multiple types of production environments. That’s all true and important. But to take advantage of Docker’s benefits in this respect, you need to revamp your delivery chain. Integration scripts, release-automation tools and so on have to be rewritten to work with containers.
What all of the above means is that Docker changes the game for everyone. Tools that have nothing to do with application deployment must be reworked to function with Docker. Software management processes and philosophies also have to adapt to Docker.
These are all things that can be done. None of the above is to say a migration to Docker is too complicated to be worth the effort. But it is a reminder that, to make Docker work for you, you need to do much more than simply change your deployment environment to containers.