For this project I really start from scratch and describe each step as clearly as I can.
After all, this blog series should also become my project documentation...
If it helps someone else as well, then this is a nice side effect.

Provisioning a Docker Host System:

Download ISO:

Why choosing debian?

  • simply because it is the base for several other Distris, including the two most popular desktop Linux Ubuntu and Mint.
  • because Linux is the most used OS hosting websites and wbapplications

MarketShareLinux2

MarketShareLinux

Reference: https://w3techs.com/technologies/details/os-linux

VM- and Operating System Provisioning:

Remarks:
If some settings doesn't fit to your needs choose different settings
<value> - placeholder for a custom value

Steps:

  • Create VM - I am using a VMware ESXi host, but any other virtualization platform should work as well
  • Boot the operating system from the installation media
  • Select graphical installation option - Graphical Install
  • Select language - English
  • Select Location - other,Europe,Austria,en_US.UTF-8
  • Select the keyboard layout - German
  • Define Hostname - <Hostname - e.g. "DOCKSRV">
  • Define domain -<Domain - e.g. ".organisation.local">
  • Root Passwort - <root password>
  • Additonal User Name - <Name - e.g. "Max Mustermann">
  • Additonal User ID - <ID - e.g. "mmuster" >
  • Additonal User Passwort - <user password>
  • Partition Disks - Use entried Disk and set up LVM, All Files in one partition,max
  • Configue Packet Manager - Austria,debian.sil.at
  • Popularity-Contest - No
  • Software Selection - SSH server,standard system utilities
  • Grub Boot Loader - Yes, /dev/sda

Configure the SSH server:

  • Edit configuration file with "Nano" - nano /etc/ssh/sshd_config
# Authentication:
LoginGraceTime 120
#PermitRootLogin without-password
PermitRootLogin yes
StrictModes yes
  • Restart SSH service - service ssh restart

Configuring the network interface:

  • Edit configuration file with "Nano - nano /etc/network/interfaces
#Loopback Interface
auto lo
iface lo inet loopback
# Ethernet Schnittstelle
allow-hotplug ens32
iface ens32 inet static
address <xxx.xxx.xxx.xxx>
netmask <xxx.xxx.xxx.xxx>
gateway <xxx.xxx.xxx.xxx>
dns-nameserver <xxx.xxx.xxx.xxx>
dns-nameserver <xxx.xxx.xxx.xxx>
  • Package list update - apt-get update
  • Install Resolvconf - apt-get install resolvconf
  • Restart network - service networkin restart
  • Start network interface - ifup ens32
  • Retrieving network information - ip ad

Install Docker:

  • Install dependency packages - apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
  • Add Docker’s official GPG key - curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
  • Add the Docker repository to Debian 10 - add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/debian \ $(lsb_release -cs) \ stable"
  • Package list update - apt-get update
  • Install Docker - apt -y install docker-ce docker-ce-cli containerd.io
  • Checking the status - sudo systemctl status docker

dockerstatus

Installing Docker - Compose:

  • Download the latest Compose - curl -s https://api.github.com/repos/docker/compose/releases/latest \ | grep browser_download_url \ | grep docker-compose-Linux-x86_64 \ | cut -d '"' -f 4 \ | wget -qi -
    • Make the file executeable - chmod +x docker-compose-Linux-x86_64
    • Move the file to the user path - mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose
  • Confirm version - docker-compose version

dockercomposestatus

Configure Compose Command-line completion

  • Download the latest Compose - curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
  • Source the file or re-login to enjoy completion feature -source /etc/bash_completion.d/docker-compose

Install Portainer (Docker Management Interface)

  • Create a persistent Volume - docker volume create portainer_data
    You will find it here: /var/lib/docker/volumes
  • Running Portainer with Docker
# Old Way:
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

# New Way:
docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

Result:

portainer

Reference:

  1. https://computingforgeeks.com/install-docker-and-docker-compose-on-debian-10-buster/
  2. https://computingforgeeks.com/how-to-install-latest-docker-compose-on-linux/
  3. https://computingforgeeks.com/install-docker-ui-manager-portainer/
  4. https://averagelinuxuser.com/debian-9-installation-guide/
  5. https://averagelinuxuser.com/linux-swap/
  6. https://averagelinuxuser.com/debian-10-install/
  7. https://blogs.itemis.com/de/vorsicht-bei-experimenten-mit-docker-im-internet
  8. https://docs.docker.com/install/linux/docker-ce/debian/#install-using-the-repository
  9. https://docs.docker.com/compose/install/
  10. https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-debian-10
  11. https://medium.com/@vijayvikram11844/portainer-to-manage-docker-4a30944ddb99