Published
Wednesday, January 29, 2020 - 07:51
Written by

What is Docker?

At it's simplest, Docker is a tool for building "containers". A "container" is system-level collection of magic that allows some useful process isolation. Containers have been around for more than 10 years. Docker started just over 5 years ago, and has exploded in popularity over the past several years. Most large-scale software systems now use containers, and most of the rest are figuring out how to get there.

Why you shouldn't care

If you're using CiviCRM and happy with your hosting and development, then you don't need to care about Docker, any more than you need to think about any other aspects of your hosting environment. End of story.

Why you might want to care

If you create CiviCRM sites with any frequency - copies of existing sites for development purposes, new sites on a production server, or whatever, then Docker and containers are a useful tool to do that. The first and still the most popular purpose of Docker is to be able to reproduce multiple software stacks on one machine without the problem of conflicts. For example: if you've got an old CiviCRM site running an older version of php and a new site that needs a newer version, it's a hassle to set that up on a single machine without some kind of virtualization. Using full machine virtualization (vmware, xen, virtualbox) is one way of solving the problem, but Docker can solve the same problem much easier, using a fraction of the machine resources and your time.

Why you should care

I'm not usually one to jump on bandwagons, especially with system administration, but the container revolution is now past the point of no return. That means you're going to want to understand the opportunities and risks that it brings, eventually. The technology has now become stable enough that it's worth exploring even if you have no immediate need.

So, here's your homework. Don't do them all, just pick the one(s) that match your learning style.

1. Read up on containers: https://en.wikipedia.org/wiki/OS-level_virtualization

2. Install Docker on your desktop: https://docs.docker.com/install/ (the core Docker tool is now called Docker engine, you probably want to install Docker compose as well).

3. Run hello world with "docker run hello-world".

4. Try this tutorial: https://docker-curriculum.com/

Questions? What else do you want to learn about Docker?

For conversation, there's a mattermost channel here: https://chat.civicrm.org/civicrm/channels/docker

Filed under

Comments

Here's an excellent longer post about the history of containers:

https://dev.to/heroku/how-containers-changed-the-world-1jip