Docker, allmänt
Den här sidan bör brytas ut i flera. Det var första skrivan jag skrev om docker allmänt.
Jag kör Docker på Ubuntu-VMs.
Installera på Ubuntu-server med sudo apt install docker.io.
För att kunna slå buildx, sudo apt install docker-buildx.
Docker compose är att sätt att enkelt köra docker-images. Installera med sudo apt-get install docker-compose-v2.
Docker compose
Det går att starta containrar enligt specifiserade värden i en Docker compose fil.
| Värde |
Förklaring |
| container_name | Specifisera ett namn för containern. Blir bättre för det mänskliga ögat när en container ex. ska stängas av |
| restart: always, restart: unless-stopped | Så att containers alltid startar vid boot av VM alternativt om de inte har stoppats manuellt |
Networking
Ta bort nätverk
docker network rm NETWORK-NAME
Aktivera IPv6
För att Docker ska ha IPv6 stöd måste filen /etc/docker/daemon.json skapas. Se exempelkonfiguration nedanför.
{
"userland-proxy": false,
"ipv6": true,
"ip6tables": true,
"fixed-cidr-v6": "fd00:1::/64",
"experimental": true
}
Starta om docker efter att filen ovan har lagts till: sudo systemctl restart docker
Bridge Networking
Per default används "bridge-networking". Alla Docker-containers är nåbara utifrån via virtuella maskinens egna IP adress och NAT:as till en privat IP adress på insidan. Det gör att man måste delegera portar till de olika tjänsterna. Default IPv4 nät i Docker-miljön är 172.17.0.0/16.
IPvlan
Istället för Bridge Networking kan IPvlan användas. Kan köras i antingen L2 eller L3-läge. I L2 läge är Docker-hosten en L2-switch/brygga och i L3 läge en router.
IPvlan L3-konf:
sudo docker network create -d ipvlan \
--subnet=10.10.10.0/24 \
--subnet=2001:db8::/68 \
--ipv6 -o parent=eth0 \
-o parent=eth0 \
-o ipvlan_mode=l3 DOCKER_NETWORK
Docker Network kräver gillar inte interface namn såsom ens18. Eth0 går bra, se artikel här för hur man byter namn på ett interface.
Nätet som har skapats kan anropas manuellt vid uppstart (docker run) eller i en Docker compose fil. Se exempel längre ned.
För att tilldela en fast IP-adress kan det antingen ske via CLI vid uppstart eller genom docker-compose-filen. Då används ipam.
Konfiguration för att skapa ett nytt nät med Docker Compose:
# Nedan specifiseras under specifika container-konfigurationen
services:
CONTAINERNAMN:
networks:
DOCKER_NETWORK:
ipv4_address: 10.10.0.3
ipv6_address: 2001:db8::1
# Nedan specifiseras "globlat" i compose filen
networks:
DOCKER_NETWORK:
driver: ipvlan
enable_ipv6: true
ipam:
config:
- subnet: 10.10.0.0/24
- subnet: 2001:db8::/64
Konfiguration för att använda ett existerande nät med docker compose:
networks:
DOCKER_NETWORK:
name: DOCKER_NETWORK
external: true
Det är flaggan external: true som gör att man kan använda ett existerande nät.
Kommandon
| Kommando | Förklaring |
| docker images | Se vilka images som finns lokalt |
| docker ps -a | Se containrar som är igång |
| docker network inspect xxxx | Kontrollera networking |
| docker compose up | Startar container från konfigurationsfil i lokal katalog, -d eller --detach för att starta i bakgrunden |
| docker compose stop |
Stoppa alla containrar från konfigurationsfil i lokal katalog |
| docker compose start | Starta alla containrar från konfigurationsfil i lokal katalog |
| docker compose logs -f | Se loggar för den docker compose container vars mapp du står i. Släng på -f för att följa |
| docker system prune --.... | Ta bort oanvända resurser |
| docker attach xxx | Anslut mot en container |
| docker rm | Ta bort container, ange ID |
| docker exec xxx uptime | Slå ex. uptime kommandot i en container |
| docker exec --user="root" -it xxxx nsenter | Hamna i containerns cli |
| docker container logs xxx | Se logg på en container, ange ID |
| docker run, flaggor | Förklaring |
| -d | Detach, kör i bakgrunden |
Saker man kan installera med docker
LibreNMS (fork med docker-compose här)
Oxidized
Netbox (på denna wiki)
Technitium
NginxProxyManager
Avkorado