Containers and Related Technologies

NOTE: I have notes on using the docker CLI elsewhere so don't plan to discuss the docker CLI here.

Getting Started

First, the chicken and/or the egg? Knowing domain terminology is critical to learning a domain. However, it's also good to get a little experience in a domain before digging into possibly more academic concerns. This RedHat article on Practical Introduction to Container terminology is nicely broken into sections initially introducing basic terminology and providing more advanced topics further down. You might want to read through the first section to at least understand the difference between an image and container before going to deep into docker tutorials. There are also links to much more detailed information in the article, you could get very deep, very quickly. You might want to save that for later. But remember it's there and review the definitions occasionally.

Speaking of learning the basics, I initially looked for books (on bookshare.org) for docker introductions. I didn't find anything as good as the docker documentation. If you've already installed Docker Desktop and setup an account on Docker Hub, you might want to jump in to the getting started tutorial. Docker even has an image ready to go with the getting-started tutorial.

After running the following command:
> docker run -dp 80:80 --name docker-getting-started-tutorial docker/getting-started
Type "localhost" into your browser's address bar and you should be in the getting started tutorial. Note that I added the "--name" argument as I prefer to give containers names so I don't have to find the container id.

What are containers?

Containers seem to be based on three core technologies (these links are ones I found useful in trying to learn this tech myself):

More Container Reading

Here are a few more links I found interesting. I'll start with a few and maybe add more as I dig in to details.

Container Orchestration

To get started, read this blog post from RedHat answering the question, "what is container orchestration?"

As much as people probably think docker when thinking of containers, kubernetes (AKA, 'k8s', because 'kubernetes' starts with 'k', ends with 's', and has 8 letters in between) dominates the container orchestration domain.

With that in mind, this section is intentionally very short. If you'll be supporting some application using containers to build out a distributed system possibly consisting of (too) many micro services, you'll almost certainly need to know about kubernetes. There is plenty out there already, no need for me to add more noise.

On the other hand, if you need to spin up a few services for local development, e.g., postgres for development data and redis for a local key value store, you probably want to use something like docker compose. If you haven't already, go back to the getting started section and run through the docker getting started tutorial. The tutorial shows how to configure and run multiple containers locally using docker-compose.