Build the ultimate Docker setup!

This is an update to my post on 3-13-2022, the original article was based on Rocky Linux 8.5. There have been changes to the OS since then. First I switched to Alma Linux which is basically just like rocky with a different organization behind it. Second there is now some default docker software in the 9.0 version of Alma and Rockey linux that nececetates removing software prior to install. I decided to repost this as a new tutorial rather than update the old.

We are going to take a vanila Alma Linux 9 server and install Docker. We are also going to add a web front end to manage docker known as Portainer. Finally to we are going to setup our docker containers to automatically update themselves with a program called WatchTower. Once finished you will have an easy to manage Docker system that updates all of your containers automatically.

So what is Docker? Docker is a platform that allows you to build, test, and deploy application quickly. Docker software is a system that allows you to host containers. Think of docker like Virtual Machines, accept instead of the machine containing a full operating system it contains the bare minimum required to run / host a specific app. A virtual machine hosting a webserver may take 10 gigs of space where a docker container hosting a webserver may take up only a couple of gigabytes. Containers are smaller and requre fewer resources than virtual machines. Docker containers are also easy to deploy allowing one to start running an applications in a few minutes vs hours setting up a VM or Server from scratch.

How To: Here we are going to take our base Rocky Linux install and install docker, portainer, and finally install WatchTower to keep all our containers up to date.

Start with your base Alma Linux 9 install and make sure it is up to date.

sudo dnf update

Foo

First step is to remove software, AlmaLinux now has podman and buildah installed, these have similar dependencies to docker and they wind up conflicting. In order to install docker properly we are going to remove these programs.

sudo dnf remove -y podman buildah

For those of you that used my previouse tutorial, this is the big change in setting up docker, and the one thing that has caused a lot of newer users heartache.

Now we add the docker repository to our machine

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Foo

Update our repos (again)

sudo dnf update

Foo

Install docker

sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Foo

Enable Docker

sudo systemctl enable docker

Foo

Start Docker

sudo systemctl start docker

Foo

Check that Docker is running

sudo systemctl status docker

(hit control z to exit the docker status screen)

Foo

Now we are going to install Portainer, Portainer provides a web front end for managing docker.

First we create a a storage volume for portainer named portainer_data

sudo docker volume create portainer_data

Foo

Now we are going to download, install and start Portainer using the docker run command. In this setup we will be using the sudo command to control docker.

sudo docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v portainer_data:/data \
    portainer/portainer-ce

Foo

Now we are going to configure portainer. From a web browser go to https://your_docker_server_ip:9443

You will be asked to create an admin username name and password.

Foo

Now that you are in Portainer select “Home” on the right hand side.

Foo

Select “local” by clicking on the docker wail boat icon

Foo

Now select the “Environments” option on the right hand menu

Foo

Select “local”

Foo

Now where it says “Public IP” add the IP address of your docker machine. This will allow you to click on ports to get to applications when you setup docker containers.

Foo

Once installed select “Update Environemt” and you are good to go.

Foo

Now we are going to install Watchtower. Watchtower is a container that watches our containers and their online source for updatets, when it sees a new update Watchtower downloads and updates the container. This allow your docker containers to remain up to date, without requires a large amount of effort on your part.

Foo

From the command line install watchtower

sudo docker run -d \
--name watchtower \
-v /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower

Foo

Now when we go back into Portainer we can se our Watchtower container up and running

Foo

We have now installed Docker, setup a web front end for management with Portainer, and setup auto updates with Watchtower. Time to go fourth and try new things.