SPN: How long have you been working in Docker?
DW: Docker itself is only about 4 years old. I first started looking at it 3 years ago but at the time, even though I am a developer, the lightbulb moment didn’t happen where I said, ‘Oh ya, I could use this.’ About 2 years ago is when I really got serious about it. I read an article about Docker that tied it more into developer benefits and that’s when I had the ‘lightbulb moment.’
SPN: Can you briefly explain Docker for developers and readers who may not have a current understanding of what it does?
DW: Docker is all about containers and moving items (code, security, settings and more) around. To visually understand one way it could be used, think of a garage and moving the content inside of it somewhere else. If you were to try to get that exact content moved over to someone else’s garage, it would obviously be very, very difficult to move each item individually or even take over multiple loads of items. With Docker containers, it’s like getting a big container and putting everything you need to make the move successful into that container. If I drop it off at your house, everything you need to get the same setup in your garage is all in this container.
Putting that into the application environment context, that means I can add my code in a container. But, it’s much more than that. Instead of just putting the code in the container, I’m also putting in security settings, environment variables and everything the app needs, even from the sysadmin side of things. The value is that once I get that container ready, I can ship it around to many different environments and it works like you’d expect.
SPN: Do you think this is something that all developers should at least be educating themselves on even if they don’t use it on a day-to-day basis?
DW: At the pace technology is going, it’s impossible to keep up on everything. Containers have such value though (in my opinion anyway) that they’re definitely worth exploring. It may be that a developer gets to the end of that exploration and realizes that they don’t really need it right now. But I think for a lot of developers––especially enterprise developers or developers that are leveraging the different clouds––it can make it a lot easier to get your code up and running consistantly. If you are a DevOps person or if you are a developer and you do the sysadmin type work, there’s a huge benefit there too in moving between the environments.
I definitely think there’s value in at least understanding the basics so you know what’s possible. A lot of people think they don’t need Docker or containers and that it doesn’t apply to them. Right now maybe you don’t need containers, but who knows on the next project. One of my main goals is to get people to that ‘lightbulb moment’ where they go, ‘Wow, this is amazing.’
SPN: Would everyone on a development team have to be educated on Docker or can individual team members learn it and specialize in it?
DW: The short answer is no. Every developer on a team definitely does not have to know the ins and outs. The long answer is at least one of the developers does. They’ll typically set up something called a Docker Compose file for the other developers and with just one or two commands, the other developers can bring up an entire development environment in a matter of seconds or minutes at the longest. The developers who aren’t experts in Docker, they at least need to know the basics so they know why they’re doing this, what are the benefits, what are some of the key commands.
If you’re going to take Docker all the way, not only for development but also for staging, production, tasks and all that fun stuff, then not only do you have to have someone on the team who knows it but you also need someone in your DevOps or sysadmin group that is knowledgeable and understands it.
SPN: Docker is designed to increase reliability and minimize problems during the development phase, but what other benefits are there to developers?
DW: If you do work in an environment that has a lot of moving parts, for instance, a web server, maybe a reverse proxy in front of that, database, caching server, and a whole bunch of moving parts in the app (think Microservices), it can be challenging to get that all up and running properly and consistently across multiple team member’s development boxes. For some companies, it literally takes days (or longer) for team leads to get new developers up to speed on a given company’s development environments. With this approach, we’re looking at less than an hour, probably less than 10 minutes depending on how many containers are used to get the development environment up and running on someone’s machine.
Another benefit is if you do have folks that are less technical, maybe a graphic artist or designer, they may know HTML and CSS but they may not know how to start servers. If you want them to actually do their design against a real site, it’s pretty easy to use Docker compose to bring up a whole application so their design is ‘live’ against the real site.
SPN: What systems do Docker containers run on?
Linux has a built-in Linux container technology that Docker leveraged so for the last 3 and 1/2 years or so, it’s been all Linux when it comes to Docker containers. You can get it going on Windows and Mac but you’d have to use a virtual machine. If you’re on a Windows 2016 server or have Windows 10 Pro, you can actually run Docker containers directly though. It’s great to have both Linux and Windows options.
SPN: Are there any resources for someone to get a basic understanding of Docker before HDC?
If they go to docker.com they have a nice set of getting started documents. If they really want to familiarize themselves with the broad spectrum of Docker, I have a bunch of free FlipBoard magazines (including one for Docker) on the bottom of my blog.
AIM HDC (Heartland Developers Conference) is a 3-day software development event for tech professionals, consisting of hands-on workshops, keynotes and other speakers, breakout sessions and networking events. Early registration pricing for HDC is available until July 18.