Skip to main content

Docker: Je Digitale Verhuisdozen voor Software

geiger-main.jpgStel je voor dat je een app wilt bouwen, maar je computer heeft niet alle benodigde onderdelen. Of je wilt je app delen met een vriend, maar hun computer is anders ingesteld. Frustrerend, toch?

Hier komt Docker te hulp! Docker is als een verzameling digitale verhuisdozen. Elke doos (een "container") bevat alles wat een app nodig heeft om te draaien: de code, de tools, de bibliotheken, alles netjes ingepakt.

Waarom Docker zo Handig is:

  • "Het werkt op mijn machine!"-probleem opgelost: Docker zorgt ervoor dat je app op elke computer hetzelfde werkt, of het nu je laptop, een server in de cloud of de computer van je vriend is.
  • Eenvoudige installatie en delen: Je kunt kant-en-klare containers downloaden van Docker Hub (een soort app store voor containers) of je eigen containers maken en delen.
  • Lichtgewicht en efficiënt: Containers delen de bronnen van je computer, waardoor ze veel minder geheugen en schijfruimte gebruiken dan traditionele virtuele machines.

Handigheidjes voor Beginners:

  • docker run <image>: Start een nieuwe container op basis van een image (de verhuisdoos).
  • docker ps: Bekijk welke containers actief zijn.
  • docker stop <container>: Stop een actieve container.
  • docker images: Bekijk welke images je hebt gedownload.
  • docker rm <container>: Verwijder een gestopte container.
  • docker rmi <image>: Verwijder een image.

Installatie?

Docker

Run the following command to uninstall all conflicting packages:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

Set up Docker's apt repository.

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

To install the latest version, run:

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


Verify that the installation is successful by running the hello-world image:

sudo docker run hello-world


Portainer

First, create the volume that Portainer Server will use to store its database:

docker volume create portainer_data

Then, download and install the Portainer Server container

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:2.21.5

Portainer Server has now been installed. 

You can check to see whether the Portainer Server container has started by running docker ps:

root@server:~# docker ps
CONTAINER ID   IMAGE                          COMMAND                  CREATED       STATUS      PORTS                                                                                  NAMES             
de5b28eb2fa9   portainer/portainer-ce:2.21.5  "/portainer"             2 weeks ago   Up 9 days   0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp   portainer

Extra's


Clean resources 
> **docker system prune** (images, containers, volumes, and networks...)

>**docker system prune -a**  (also stopped containers!!!)

Removing Docker Images
> **docker images -a** (show list)
> **docker images -f dangling=true** (List dangling images)
> **docker images -a |  grep "pattern"** (specific images)
>
> **docker rmi Image Image** (Remove specific)
> **docker images purge** (remove all (dangeling) images)
> **docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi** (Remove)
> **docker rmi $(docker images -a -q)** (remove all images)


Removing Containers
> **docker ps -a** (list all containers)
> **docker ps -a -f status=exited** (list exited containers)
> **docker ps -a |  grep "pattern”** (list specific)
>
> **docker rm ID_or_Name ID_or_Name** (Remove specific container)
> **docker rm $(docker ps -a -f status=exited -q)** (Remove exited containers)
> **docker ps -a | grep "pattern" | awk '{print $3}' | xargs docker rmi** (Remove specific)
> **docker stop $(docker ps -a -q) | docker rm $(docker ps -a -q)** (remove everything)


Removing Volumes

> **docker volume ls** (List volumes)
> **docker volume ls -f dangling=true** (list dangling volumes)
>
> **docker volume rm volume_name volume_name** (remove specific volume)
> **docker volume prune** (Remove dangling volumes)