Should you deploy containers in the public cloud or on-premises? If you want to run Docker in production, that’s a question you’ll have to answer. Here’s an overview of the benefits and drawbacks of each approach.
In general, the pros and cons of running containers on-premises or in the cloud mirror the differences between these two deployment options for any type of software. But the nature of containers also creates a few special considerations.
Here’s a breakdown of the stakes involved in running containers both on-premises and in cloud-based servers…
The advantages of an on-premises container infrastructure include:
- Full control over the container environment.
- More flexibility in configuring networking, and possibly storage.
- The ability to use any version of any tool or container platform you choose.
- No worries about potential compliance issues resulting from data stored in containers.
- Full control over the host operating system and environment.
But on-premises container deployment is also subject to the following drawbacks:
- Lack of easy scalability. This can be especially problematic if you’re using containers because you’re hoping to become more “agile” in the DevOps sense.
- There are no turnkey container deployment solutions. You have to set up and maintain all of the components of your container stack yourself.
Public Cloud-Based Containers
That last point in the section above brings me to the main advantage of public cloud-based containers, which is:
- Easier setup and management via platforms such as AWS ECS or Azure Container Service. You’ll still need a fair amount of expertise with Docker to use these offerings, but they require less setup and configuration than an on-premises installation. They are also integrated with other cloud-based tools for tasks such as monitoring.
Running containers in the cloud also delivers more scalability, since you can add compute and storage resources on demand.
So, what are the downsides of deploying containers to the cloud? There are a couple:
- You’ll almost certainly have to run your containers on a virtual machine. That may be good and well for many people. But you’ll miss out on some of the potential advantages of running containers on bare-metal servers, which you could do easily if you were deploying on-premises.
- You lose control. You have to use whichever orchestrator or underlying operating systems are provided by the cloud host for building your container stack.
As containers continue to grow in popularity, there is a good chance that public cloud services for container deployment will become more popular, too. That would be consistent with adoption trends associated with most types of infrastructure technologies. But on-premises containers will remain important in certain use cases.