Docker/containers Intro

Advantage no. 1: Kawaii logos

Containers

  • resurseffektivt – slipper skapa en hel VM för att testa saker
  • Bättre “konsistens” – alla utvecklare får samma mijö för containers
  • Portabelt – Containers bryr sig inte om det underliggande OSet, även om det såklart används. containers kan köras “överallt”.
  • Skalbartberoende på last på t.ex. webbserver så kan containers skalas. Se kubernetes aka K8S. “Vertikal skalning”
  • Kan startas / stoppas mycket snabbare än ett VM

Bild från https://developer.ibm.com/articles/true-benefits-of-moving-to-containers-1/

Docker – en av flera containerhanteringssystem

  • “Docker desktop” – det man använder för windows – utvecklat i samarbete med MS.
  • Docker (Compose) – Enkelt sätt att sätta upp en komplett miljö/stack komplett med nätverk och lagring/volymer.
  • Docker Windows – jag har endast använt linuxcontainers mha WSL, men windowscontainers ska fungera lika bra även om de är större. Måste välja mellan windows mode resp. linux mode. Kan inte köra båda typer av containers samtidigt.

*Exempel på docker compose för att få upp en miljö för testning – MRBS *

https://docs.docker.com/compose/

Docker vs podman

Docker är OCI kompatibelt med podman (open container standard), men det finns några skillnader.

Pros docker

  • Det mesta testas och är byggt för docker. Docker har mycket större community / bättre dokumentation än podman.
  • “Con”: Kan inte köra windowscontainers samtidigt med linuxcontainers i docker desktop.
  • Con: Säkerhet (dockerd körs som root)
    • Containers körs default som root men det går att köra “rootless”

Pros/Cons podman

  • Pro: Är (på pappret iaf) säkrare än docker.
  • Con: Man slipper ha en docker deamon körandes.
  • Pro: systemd integration – containers kan köras som systemd services

Man kan köra docker lokalt och podman i prod. Containers och images ska vara kompatibla med varandra.

Brandväggs-“roligheter”

Det verkar som att docker har problem med nftables brandväggen i RHEL 9, jag fick det inte att fungera med brandväggen. Finns många “Gotchas” med brandväggar.

“Docker and ufw use iptables in ways that make them incompatible with each other.” => docker ignorerar ufw helt och tillåter allt. Så docker på ubuntu med ufw rekommenderas ej. Hörde från serverdrift att även podman har liknande problem i RHEL out of the box.

Även podman har “problem” med nftables (eller så var det min dockerconfig som sabbade allt)

Mappade portar lyssnar på 0.0.0.0, inte localhost

https://docs.docker.com/network/packet-filtering-firewalls/

Portainer – smidigt webb GUI för att hantera containers

Jag har bara testat det i linux men ska fungera med windowscontainers också, i docker desktops “windowsläge”

Apropå skillander mellan docker och podman:

https://docs.portainer.io/start/requirements-and-prerequisites

traefik – smidig proxy/lastbalanserare för containers

Demo – traefik configuration

https://traefik.saimn.com/dashboard/#/

https://grafana.saimn.com/?orgId=1