Docker

Why Docker

We will use docker because Docker makes development efficient.

The usage of docker gives a very big advantage and that’s the write once ship many.

The development team will write an application/service and use docker to make it a container that will surely have all the requirements for the user to run it on any machine that has docker installed even inside another docker container, thus giving the ability of nested virtualization

Enabling the creation of a CI/CD pipeline

cicd

Linux/*Nix Installation of docker

sudo -l # To ensure that we can run apt as root
sudo apt-get update # To update our repos/references on apt
sudo apt install -y lsb-release
sudo apt install -y curl
curl -V # Ensure that curl is installed and in a modern version
sudo apt install software-properties-common

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg # To add the gpg key on our keyring

echo \
  "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Add the official repo on apt or any other package manager

sudo apt install -y docker-ce # Actually installing docker
sudo usermod -aG docker $USER # Add current user to the docker group
su - ${USER} # Reload our shell

docker --version # See the docker version
docker run  hello-world # Test if docker really works

Windows 10 with wsl version2 enabled

You must have wsl version2 installed and enabled (Install wsl)

Step 1: Download the Docker Desktop for Windows from https://docs.docker.com/desktop/windows/install/

Step 2: Execute the installer via powershell or by just cklicking on the installer.exe file

cd .\Downloads\
.\"Docker Desktop Installer.exe"

Step 3: Accept anything the installer ask for

Step 4: Log out and Log in, after you are prompted to do so

Step 5: Open the docker engine app

Step 6: Go to docker app settings → Resources → WSL Integration

Step 7: Click on the refresh button

Step 8: Enable docker for the wsl installation that you want.

Step 9: Click on apply and restart

Step 10: Open the wsl shell and type:

docker --version
docker run hello-world

Fix "x509: certificate signed by unknown authority" issue

On Error:

Get https ://registry.vlabs.uniwa.gr:5080/v2/: x509: certificate

Pulling  ...
ERROR: Get https://registry.vlabs.uniwa.gr:5080/v2/: x509: certificate signed by unknown authority

run

sudo su
touch set-ca.sh

copy-paste lines

registry_address=hub.swarmlab.io
registry_port=5443
mkdir -p /etc/docker/certs.d/$registry_address:$registry_port
openssl s_client -showcerts -connect $registry_address:$registry_port < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/$registry_address:$registry_port/ca.crt

registry_port=5480
mkdir -p /etc/docker/certs.d/$registry_address:$registry_port
openssl s_client -showcerts -connect $registry_address:$registry_port < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /etc/docker/certs.d/$registry_address:$registry_port/ca.crt

exec file

sudo bash ./set-ca.sh

docker-compose

You also need to install Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose