Skip to main content

K3s Kubernetes

Install Docker

Since I'm going to use Docker to build my OpenFaaS functions, I need to install Docker and have buildx in it.

💡
I'm doing this only on one of my nodes, control01, so I can build arm64 native images and push them to registry, and also build OpenFaaS functions. Building OpenFaaS functions on the same node where the server is running is not recommended, and Alex Ellis told me personally that that’s not the way it should be done! You should build on your client and push to OpenFaaS gateway from there, and so on... However, I can confirm this works just fine, and it’s less hassle for me as I can also setup GitLab worker on this node and have my stuff build automatically there whenever I push to my local GitLab (GitLab is on a different server in my network, outside the scope of this guide.)

Clean slate first

Remove the installation you have now.

sudo apt remove docker docker-engine docker.io containerd runc

Install Docker

To install Docker on DietPi arm64 we are pretty much going to follow the official steps. 🙂

Install prerequisites

sudo apt-get install ca-certificates curl gnupg lsb-release

Install GPG key

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Install Repository

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Install Docker itself

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Edit Docker settings

Add /etc/docker/daemon.json configuration for docker daemon.

{
  "exec-opts": ["native.cgroupdriver=systemd"],
  "insecure-registries": ["registry.cube.local:5000"],
  "experimental": true,
  "log-driver": "json-file",
  "storage-driver": "overlay2",
  "log-opts": {
    "max-size": "100m"
  }
}
💡
"insecure-registries": ["registry.cube.local:5000"] This is for insecure private registry running on HTTP, if you use TLS, you don't need this line.

Enable at boot and start docker daemon

sudo systemctl enable docker
sudo systemctl start docker

Adding support for multi-arch

Some additional packages are needed if you're going to use OpenFaaS and build on arm64.

#might already be installed
sudo apt-get install binfmt-support qemu-user-static