Blogg
Herding av Docker-containere for flerleie-hosting: En trinn-for-trinn-isoleringsveiledning
Lær hvordan du sikrer Docker-containere for flerleiemiljøer med praktiske sikkerhetstiltak som ikke-root-brukere, fjernede kapabiliteter, skrivebeskyttede filsystemer og nettverksisolasjon.

Sammendrag
Å kjøre en flerleie Docker-hostingplattform krever lufttett containerisolasjon for å hindre leietakere i å forstyrre hverandre eller rømme til verten. Denne guiden leverer en konkret, trinnvis herdingsprosess du kan bruke i dag. Du lærer å konfigurere ikke-root-brukere, fjerne unødvendige Linux-kapabiliteter, montere filsystemer som skrivebeskyttet, håndheve ressursbegrensninger via cgroups, segmentere nettverk og bruke seccomp- eller AppArmor-profiler. Vi vil også dekke når du bør supplere containere med virtuelle maskiner for maksimal sikkerhet. Til slutt vil du ha en sjekkliste for systematisk å eliminere vanlige container-rømningsvektorer og holde flerleieinfrastrukturen virkelig isolert.
Det virkelige problemet med flerleie-containere
Docker-containere deler vertskjernen, og hvis isolasjon er feilkonfigurert, kan en leietaker teoretisk få tilgang til en annens data, bruke all CPU, eller til og med bryte ut til verten. Som hostingleverandør trenger du lufttette grenser uten å ofre ytelsesfordelene ved containere. Mange team starter med standard Docker-innstillinger, som er designet for utvikling, ikke produksjonsflerleie. Den gode nyheten: med en systematisk herdingssjekkliste kan du låse ned hver container til nær-VM-nivåer av isolasjon mens du beholder Docker-hastigheten.
Denne artikkelen går gjennom hvert herdingstrinn med praktiske eksempler og forbehold. Til slutt vil du ha en repeterbar prosess for å distribuere sikre flerleie-containere.
Trinn 1: Kjør containere som ikke-root
Som standard kjører Docker-containere som root. Hvis en container blir kompromittert, får angriperen root-privilegier inne i containeren og kan forsøke en container-rømning. Først, opprett en dedikert bruker i Dockerfilen og bytt til den:
FROM ubuntu:22.04
RUN useradd -m appuser
USER appuser
Forbehold: Noen prosesser (f.eks. binding til porter < 1024) krever root. I slike tilfeller, bruk --cap-add-flagget for å gi bare den nødvendige kapabiliteten, som --cap-add=NET_BIND_SERVICE, og kjør fortsatt prosessen under en ikke-root-bruker.
For mer om grunnleggende isolasjon, se vår guide om å oppnå ekte flerleie-isolasjon i Docker.
Trinn 2: Fjern alle Linux-kapabiliteter og legg tilbake bare det du trenger
Linux-kapabiliteter bryter ned root-privilegier til små enheter. Docker-containere kommer med et standardsett med kapabiliteter som er for tillatende for flerleie-hosting. Fjern alle og legg tilbake bare det applikasjonen krever:
docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE my-app
Vanlige kapabiliteter å unngå: SYS_ADMIN (container-rømning), NET_RAW (pakkesnoking), SYS_PTRACE (prosessfeilsøking). Bruk docker run med --security-opt no-new-privileges for å forhindre privilegieeskalering via setuid-binærfiler.
Trinn 3: Monter rotfilsystemet som skrivebeskyttet
Angripere skriver ofte ondsinnede skript til containerens filsystem. Ved å gjøre rotfilsystemet skrivebeskyttet, forhindrer du det:
docker run --read-only --tmpfs /tmp:rw,noexec,nosuid,size=64m my-app
--tmpfs oppretter en midlertidig skrivbar montering for kataloger som /tmp og /var/run. noexec-flagget forhindrer kjøring fra den monteringen. Denne tilnærmingen tvinger angripere til å bevege seg gjennom skrivbare kataloger, som du kan overvåke.
Trinn 4: Håndhev ressursbegrensninger med cgroups
Ubegrensede containere kan utføre tjenestenektangrep ved å tømme vertens minne eller CPU. Bruk DOCKERs kjøretidsbegrensninger:
docker run --memory=512m --memory-swap=512m --cpus=0.5 --pids-limit=100 my-app
--memoryog--memory-swapsetter harde grenser (ingen swap).--cpusbegrenser CPU.--pids-limitforhindrer fork-bomber ved å begrense antall prosesser.
Forbehold: Ressursbegrensninger håndheves av cgroups, men de forhindrer ikke dataeksfiltrering via nettverk. Kombiner med nettverksisolasjon (neste trinn).
Trinn 5: Segmenter nettverk med tilpassede Docker-nettverk
Som standard deler Docker-containere et bro-nettverk. I en flerleieoppsett må du isolere hver leietakers nettverksstabel. Opprett et dedikert nettverk per leietaker:
docker network create tenant-alpha --internal
docker run --network tenant-alpha my-app
Bruk --internal-flagget for å blokkere utgående internettilgang, og eksponer deretter bare nødvendige porter via -p. For mer avansert nettverkssegmentering, vurder sikring av webapper med Docker-isolasjon.
Forbehold: Interne nettverk forhindrer direkte container-til-container-kommunikasjon på tvers av leietakere, men DNS-lekkasjer kan fortsatt oppstå hvis du bruker vertsnettverk. Hold deg til bro- eller overlay-nettverk.
Trinn 6: Bruk Seccomp- og AppArmor-profiler
Seccomp filtrerer systemkall, og AppArmor (eller SELinux) håndhever obligatoriske tilgangskontroller. Docker gir en standard seccomp-profil som blokkerer farlige systemkall som clone med visse flagg. For strengere isolasjon, opprett en tilpasset profil:
docker run --security-opt seccomp=./custom.json --security-opt apparmor=docker-default my-app
Du kan generere en basisprofil med docker run --rm -it --security-opt seccomp=unconfined my-app strace -c -S time og deretter trimme ned. Forbehold: For restriktive profiler kan ødelegge legitim funksjonalitet. Test grundig i staging.
Trinn 7: Vurder hybridisolasjon med virtuelle maskiner
Hvis leietakerne dine krever absolutt isolasjon (f.eks. regulert industri), kjør containere inne i en lettvekts-VM. Verktøy som Sysbox eller Kata Containers gir maskinvareseparasjon uten å ofre containerhastighet. Dette er tilnærmingen som brukes av DOCKERs Enhanced Container Isolation (ECI). Selv om overhead er høyere enn bare containere, er den langt lavere enn fulle VM-er per arbeidsbelastning.
For mer om å velge riktig isolasjonsnivå, les utforming av en flerleie Docker-arkitektur.
Sette alt sammen: En herdingssjekkliste
- Bygg containere med ikke-root-bruker.
- Fjern alle kapabiliteter, legg til bare nødvendige.
- Monter filsystem skrivebeskyttet med midlertidige skrivbare monteringer.
- Sett minne-, CPU- og PID-grenser.
- Opprett isolerte Docker-nettverk per leietaker.
- Bruk tilpassede seccomp- og AppArmor-profiler.
- Vurder hybride VM-containere for høye sikkerhetsbehov.
Konklusjon
Containerherding er ikke en engangsoppgave—det er en pågående disiplin. Trinnene ovenfor utgjør en sikkerhetsbaseline for flerleie-hosting. Husk at ingen enkelt tiltak garanterer sikkerhet; forsvar i dybden er nøkkelen. Start med det grunnleggende: ikke-root-brukere og fjernede kapabiliteter. Legg deretter på ressursbegrensninger og nettverkssegmentering. For de mest sensitive arbeidsbelastningene, kombiner containere med VM-er. Med denne guiden kan du trygt distribuere flerleie Docker-miljøer som er både effektive og sikre.
