Introduction to Docker / Kubernetes

This is hardly a complete guide but some people asked about Docker and kubernetes and wanted to shared my thoughts. I’ll make this a wiki page if people want to add/correct my breakdown.

Docker is a ‘container’ which essentially allows you run a very lightweight application sandboxed away from the host operating system. It’s has a lot more concepts built into then a Linux chroot but at the core of it it shared some similarities. It allows to setup an environment that prevents the user from accessing resources on the host unless explicitly allowed.

We can define a new docker Image by creating a docker file.

FROM alpine

RUN apk update && \
        apk add bash vim 

CMD sleep 9999

Now, let’s build the image.

docker build --tag=testing . 

That creates a new image called testing which will execute sleep 9999 and then exit once it’s done.

To run the image you can type:

docker run testing

Each line in the docker file is a ‘layer’ so if you modify the Dockerfile and add the following line above the CMD

USER guest

Then it’ll only execute the lines

USER guest
CMD sleep 9999

on top of the previous layer that has already been executed.

once the container is running, you can also drop into the running container to inspect or modify the OS though keep in mind any changes done this way will go away once you remove the container and a new contrainer is created from the existing image.

docker ps

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
41cdf9830910        testing             "/bin/sh -c 'sleep 9…"   19 minutes ago      Up 19 minutes                           condescending_golick

Then i can drop inside the container by running:

docker exec -it 41cdf9830910 sh

##TODO:

  • docker compose
  • docker networking
  • kubernetes
  • helm
  • skaffold
3 Likes

Great information. Thank you!