Why isn’t everyone using containers? There are many reasons for limited container adoption, but chief among them is the difficulty of migrating an existing monolithic app to run inside a container. Here’s a look at this challenge, the current solutions and opportunities to improve.
On the surface, containerizing an existing app may not seem too difficult. And if your app is simple, it’s not. If the app doesn’t require storage and has no configuration options, making it run in a container is as easy as creating an app image, writing a basic Dockerfile and deploying the container.
But most apps, unfortunately, aren’t simple. To containerize an app that was designed to run inside a traditional virtual server, you need to solve several challenges:
- Allowing it to access configuration options in a way that doesn’t require configurations to be embedded in the app image (since that makes it hard to change options).
- Connecting the app to storage, which may exist as a data volume, local file system on the host, network file system or something else.
- Storing logs, which is tricky because traditional apps usually expect to be able to write to logs inside a persistent operating system directory (like/var) but container file systems don’t usually exist persistently, so logs will be lost if they are written inside the container.
To date, tools to aid in solving these tasks are difficult to find. They exist, with dockerize leading the pack. But even that tool only solves part of the problem—it primarily focuses on migrating configuration files and setting up logging for an app running in a container. Storage needs to be figured out separately.
The lack of easy-to-use, comprehensive migration tools means organizations that want to port existing apps to run on Docker or another container platform have to do things the hard way. That’s possible, but it requires a fair amount of expertise and time.
Partner Opportunity: Simplifying Container Migration
This means there is a great deal of opportunity for vendors in the container ecosystem that build solutions for easing the migration to containerized infrastructure. While it’s unrealistic to expect to be able to run a script that can “automagically” take any monolithic app and seamlessly containerize it, there is a lot of room for expanding beyond the functionality of simple tools such as dockerize.
Now that Docker is building Swarm orchestration into its own platform, third-party tools that add functionality to the Docker stack in ways other than orchestration are going to be important. Solving the container migration challenge might therefore be an excellent place for innovators to start as they look to bring new value to the container ecosystem.