Adventures with Docker

I’m a huge fan of Docker ever since I started to use it, approximately a year after it was started. It’s one of those technologies where when you start to use it, you immediately know it’s going to be a sea change in how things are done in the industry. It’s definitely going to be more impactful then Virtual Machines.

We’ve used Docker to great effect where I work. We’re building a huge system called Ericsson Network Manager, which will manage the networks of the future. As such, it’s a hugely complex problem to compartmentalise parts of the product, to be able to just use the part that you work directly on.

There has been two approaches inside the company:

  1. Encapsulate the whole system
  2. Just encapsulate the product

In my product area, we’ve focused on number 2. We did this because we wanted to focus on two things:

  1. Automated functional testing
  2. Automated integration testing

And again, number 2 was the main catalyst, as the existing infrastructure we had in place was very compromised. We have a central Continuous Integration service, but with over 100 teams, they can’t suit every team and every product.

So we decided to start small and just have Docker prove itself by taking over parts of our infrastructure where we ran integration tests. We have had many issues, but they have been mostly with the immaturity of Docker, for which Docker hasn’t provided a centralised solution (like cleaning up unused images, which can fill up a whole disk and then bad things happen). Elsewhere companies like Spotify and Google have written custom solutions to many of these such issues.

The biggest advantages we’ve gotten have been:

Disadvantages:

Overall for us as a product area I think Docker has been a worthwhile investment for sure. It’s definitely not as stable as Virtual Machines (which at this point is very old technology), but the possibilities it brings to speed up development and deployment are really exciting to me!