Komplet guide til oprettelse og administration af stakke i Docker

Sidste opdatering: 01/09/2026

  • Hver stak opbevarer sin compose.yaml, variabler, netværk og volumener i en mappe.
  • Tjenesterne deler et netværk og er placeret ved hjælp af deres interne navne.
  • Volumener bevarer data, selvom containere genskabes eller opdateres.
  • Et sundhedstjek forhindrer applikationer i at starte, før deres database reagerer.
Sådan opretter du en stak i Dockge trin for trin

Når Dockge er installeret, kan du bruge dets dashboard til at implementere applikationer, der består af en eller flere containere, uden konstant at skulle skrive kommandoer i terminalen. Hver applikation administreres som en Docker Compose-stak, med dets tjenester, variabler, netværk og volumener samlet i ét projekt.

Dette er især nyttigt, når en applikation har brug for flere komponenter for at fungere sammen. For eksempel kan en tjeneste som Gitea kræve én container til applikationen og en anden til PostgreSQL. Dockge giver dig mulighed for at redigere konfigurationen, starte assemblyen, gennemgå dens logfiler og opdatere billederne fra en enkelt grænseflade.

Denne vejledning forudsætter, at Docker og Dockge allerede er oppe og kører. Hvis du ikke har konfigureret dit dashboard endnu, skal du først... Installer Dockge med Docker Compose og konfigurer din stacks-mappe korrekt.

Hvad betragter Dockge som en stak?

Hvad betragter Dockge som en stak?

I Dockge er en stak i bund og grund en Docker Compose-projektDen består normalt af en mappe, der indeholder en fil compose.yaml og eventuelt en fil .env, yderligere konfigurationer, certifikater eller mapper, der bruges som volumener.

Med standardindstillingerne gemmer Dockge projekter i henhold til denne struktur:

/opt/stacks/
├── gitea/
│   ├── compose.yaml
│   └── .env
├── stirling-pdf/
│   └── compose.yaml
└── vaultwarden/
    ├── compose.yaml
    └── .env

Hver undermappe repræsenterer en uafhængig stak. Denne filbaserede struktur giver dig mulighed for at administrere de samme projekter fra Dockge eller ved hjælp af traditionelle kommandoer som f.eks. docker compose up, docker compose down y docker compose logs.

Dette koncept bør ikke forveksles med Docker Swarm-stacks. Dockge bruger Docker Compose og Det forvandler ikke serveren til en klynge.Elementer som f.eks. manager- og worker-noder, routing mesh, globale tjenester eller kommandoen docker stack deploy De tilhører Swarm og er ikke involveret i denne procedure.

Selvom Dockge kan oprette forbindelse til forskellige værter ved hjælp af agenter, fortsætter hver stak med at køre som et Compose-projekt på den tilsvarende vært.

Hvad du skal bruge, før du opretter stakken

Før du implementerer en applikation, er det en god idé at indsamle de data, som din Compose-fil skal bruge:

  • La officielt billede for hver tjeneste og den etiket, du vil bruge.
  • De værtsporte, der vil være tilgængelige.
  • De mapper eller volumener, hvor dataene skal gemmes.
  • De miljøvariabler, der kræves af applikationen.
  • Databaseoplysninger og andre interne tjenester.
  • De tilladelser, der kræves for at få adgang til de monterede mapper.

Du skal også beslutte, hvilke tjenester der kræver ekstern eksponering. For eksempel en database, der kun bruges af én anden applikation i stakken. Du behøver ikke at udgive din port. på værten. Containere kan kommunikere direkte via det interne netværk, der er oprettet af Compose.

Eksklusivt indhold - Klik her  Ændring af Downloads-mappen i Windows 11 og 10: en komplet guide

For at øve dig med en enkelttjenesteapplikation, før du opretter mere komplekse projekter, kan du Installer Stirling PDF med Docker og administrere det senere fra Dockge.

Sådan opretter du en ny stak i Dockge

Sådan opretter du en ny stak i Dockge

Få adgang til Dockge-panelet, og tryk på knappen for at opret en ny stakIndtast et kort og genkendeligt navn, helst bestående af små bogstaver, tal og bindestreger, uden mellemrum eller specialtegn.

For eksempel:

gitea

Dockge opretter en mappe til projektet i den mappe, der er konfigureret til stakkene. I hovededitoren kan du skrive eller indsætte indholdet af compose.yaml.

Følgende eksempel opretter en Gitea-server ledsaget af en PostgreSQL-database:

services:
  db:
    image: postgres:17-alpine
    restart: unless-stopped
    environment:
      POSTGRES_DB: ${POSTGRES_DB}
      POSTGRES_USER: ${POSTGRES_USER}
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    volumes:
      - db_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"]
      interval: 10s
      timeout: 5s
      retries: 5

  gitea:
    image: docker.gitea.com/gitea:1-rootless
    restart: unless-stopped
    environment:
      GITEA__database__DB_TYPE: postgres
      GITEA__database__HOST: db:5432
      GITEA__database__NAME: ${POSTGRES_DB}
      GITEA__database__USER: ${POSTGRES_USER}
      GITEA__database__PASSWD: ${POSTGRES_PASSWORD}
    ports:
      - "${GITEA_HTTP_PORT:-3000}:3000"
      - "${GITEA_SSH_PORT:-2222}:2222"
    volumes:
      - gitea_data:/var/lib/gitea
      - gitea_config:/etc/gitea
    depends_on:
      db:
        condition: service_healthy

volumes:
  db_data:
  gitea_data:
  gitea_config:

Nuværende versioner af Docker Compose følger Komponér specifikationDerfor er det ikke længere nødvendigt at starte filen med egenskaber som version: "3"Compose bruger automatisk den nyeste ordning, den genkender.

Sådan konfigurerer du miljøvariabler

Det foregående eksempel bruger referencer som f.eks. ${POSTGRES_PASSWORD}Disse værdier skal defineres i en fil. .env placeret i den samme stakmappe.

For eksempel Gitea kunne indholdet være:

POSTGRES_DB=gitea
POSTGRES_USER=gitea
POSTGRES_PASSWORD=CAMBIA_ESTA_CONTRASENA
GITEA_HTTP_PORT=3000
GITEA_SSH_PORT=2222

Erstat eksempeladgangskoden med en lang, tilfældig adgangskode. Filen .env Det letter genbrug af Compose, men Den krypterer ikke hemmeligheder.Du bør begrænse dens tilladelser, ekskludere den fra Git-repositories og undgå at dele den sammen med skærmbilleder eller offentlige kopier af projektet.

For mere krævende miljøer understøtter Docker Compose hemmeligheder monteret som filer i containere. Både PostgreSQL og Gitea tillader læsning af adgangskoden fra en fil, hvilket forhindrer den i at vises direkte blandt servicevariablerne.

Dockge har adgang til Docker-socket'en til at administrere containere. Af denne grund bør kun betroede administratorer have adgang til dashboardet. Du bør også undgå at indsætte Compose-konfigurationer fra ukendte kilder: de kan montere følsomme mapper på værten eller anmode om forhøjede rettigheder.

Sådan fungerer netværk og tjenestenavne

Sådan fungerer netværks- og servicenavne i Dockge

Docker Compose opretter automatisk en standardnetværk for hvert projektAlle tjenester, der er forbundet med den, kan findes ved hjælp af det navn, der bruges i compose.yaml.

I eksemplet opretter Gitea forbindelse til PostgreSQL ved hjælp af:

db:5432

db Det er servicenavnet, ikke en fast IP-adresse. Docker bevarer denne interne opløsning, selvom containeren genskabes og modtager en anden adresse.

Du bør ikke bruge localhost at forbinde to containere. Inde i Gitea-containeren, localhost Det refererer til selve Gitea, ikke PostgreSQL-containeren.

Eksklusivt indhold - Klik her  Sådan gendanner du Safari

Det er også unødvendigt at publicere databaseport 5432, hvis kun Gitea skal oprette forbindelse til den. Ved ikke at eksponere den i sektionen portsDu reducerer serverens angrebsflade.

Sådan bevarer du stakdata

Containere kan udskiftes. Hvis du kun gemmer information i deres interne filsystem, kan du miste den, når du genskaber dem. For at undgå dette erklærer eksemplet tre vedvarende mængder:

  • db_data Den bevarer PostgreSQL-databasen.
  • gitea_data Den lagrer Giteas arkiver og data.
  • gitea_config Det bevarer applikationsindstillingerne.

At stoppe eller genskabe stakken sletter ikke automatisk disse volumener. De forbliver dog på den samme server, så De erstatter ikke en backup.

Du kan også bruge bind-mounts til at gemme filer i bestemte stier på værten. I så fald skal du kontrollere, at mapperne findes, og at brugeren, der kører containeren, har tilstrækkelige tilladelser til at læse eller skrive til dem.

Hvorfor bruge sundhedstjek og afhængigheder

Ejendommen depends_on Den fastlægger den rækkefølge, hvori Compose opretter tjenesterne, men at starte en container betyder ikke, at den applikation, der hostes i den, er klar.

Det kan tage flere sekunder for PostgreSQL at initialisere databasen. Hvis Gitea forsøger at oprette forbindelse for tidligt, kan den vise fejl, selvom begge containere kører.

El healthcheck Eksemplet kører periodisk pg_isreadyTilstanden service_healthy Dette får Compose til at vente, indtil PostgreSQL reagerer korrekt, før Gitea startes. Denne kombination er især nyttig i stakke, der inkluderer databaser, køer eller lagringstjenester.

Sådan starter og kontrollerer du stakken

Når du har færdiggjort Compose-filen og variablerne, skal du gemme ændringerne og starte stakken fra Dockge. Dashboardet viser downloads af billeder, oprettelse af volumen og opstart af containere i realtid.

Bekræft at PostgreSQL vises som værende i orden, og at Gitea fortsat kører. Åbn derefter:

http://IP_DEL_SERVIDOR:3000

Du kan også tjekke projektet fra terminalen:

cd /opt/stacks/gitea
docker compose config
docker compose ps
docker compose logs --tail=100

docker compose config Den viser den endelige konfiguration efter at variablerne er blevet løst. Dette er især nyttigt til at finde syntaksfejl, tomme værdier eller uventede substitutioner, før tjenesterne startes.

Når du har brug for at opdatere billederne, kan du Opdatering af en Docker-container ved hjælp af DockgeFør en større opgradering skal du sikkerhedskopiere dine enheder og gennemgå versionsændringerne.

Sådan importerer du en eksisterende stak til Dockge

Dockge kan også administrere tidligere oprettede Compose-projekter fra terminalen. Den anbefalede procedure er:

  1. Stop det eksisterende projekt for at undgå dubletter.
  2. Opret en undermappe i stacks-mappen.
  3. Flyt filen derhen med navnet compose.yaml.
  4. Kopiér også din fil .env og hjælpefilerne.
  5. Brug indstillingen Scan Stacks-mappe fra Dockge.
  6. Gennemgå konfigurationen, før du genstarter projektet.
Eksklusivt indhold - Klik her  Sådan ændrer du startsiden i Chrome

For eksempel:

/opt/stacks/mi-aplicacion/compose.yaml

Hvis du har konfigureret en anden mappe til /opt/stacksHusk at ruten, der er oprettet i Dockge-containeren, skal være identisk med værtens absolutte stiForskellige ruter kan forårsage, at relative bindingsmonteringer peger på de forkerte placeringer.

Almindelige fejl ved oprettelse af en stak i Dockge

Almindelige fejl ved oprettelse af en stak i Dockge

YAML-filen er ugyldig

YAML er baseret på indrykning og understøtter ikke tabulatorer i stedet for mellemrum. Vær særlig opmærksom på sektionerne. services, volumes y environmentLøb docker compose config for at finde den problematiske linje.

Fejlen Porten er allerede allokeret vises

En anden container eller tjeneste bruger den samme værtsport. Skift kun værdien til venstre for tilknytningen. For eksempel, erstat 3000:3000 ved 3001:3000.

Variablerne vises tomme.

Kontroller at filen har det nøjagtige navn .envat den er inde i stakmappen, og at navnene matcher dem, der bruges i compose.yamlTjek resultatet af docker compose config uden at dele dens output, hvis den indeholder hemmeligheder.

Applikationen kan ikke finde databasen

Brug servicenavnet som værtsnavn. I eksemplet skal det bruges db, Nej localhost eller en manuelt tildelt IP-adresse. Kontroller også, at begge tjenester deler et netværk.

Applikationen starter før PostgreSQL

depends_on Uden et sundhedstjek styrer den kun oprettelsesrækkefølgen. Tilføj en healthcheck til databasen og bruger betingelsen service_healthy.

"Tilladelse nægtet" vises, når en mappe monteres.

Bekræft, at stien findes på værten, at den er absolut, hvor det er relevant, og at dens tilladelser giver adgang for containerens interne bruger. Giv ikke globale skrivetilladelser som en permanent løsning.

Stakken vises ikke i Dockge

Kontroller, at filen er placeret direkte i en struktur som f.eks. /opt/stacks/nombre/compose.yamlLøb derefter Scan Stacks-mappeProjekter gemt uden for den konfigurerede mappe vises ikke automatisk.

Containeren går løbende i en genstartstilstand

Åbn loggene fra Dockge eller kør dem docker compose logsDe mest almindelige årsager er forkerte legitimationsoplysninger, manglende nødvendige variabler, utilstrækkelige tilladelser eller en afhængighed, der endnu ikke er tilgængelig.

Oprettelse af en Docker-stak involverer at definere en applikation ved hjælp af Docker Compose, gemme dens variabler og persistente data og implementere den fra en visuel grænseflade. Nøglen er at bruge servicenavne til intern kommunikation, kun eksponere de nødvendige porte og kontrollere tilgængeligheden af ​​afhængigheder ved hjælp af sundhedstjek.

Dockge forenkler administrationen, men projekter forbliver standard Compose-filer. Dette giver dig mulighed for at bevare kontrollen over konfigurationen, bruge kommandolinjen efter behov og migrere stakke til en anden server uden at være afhængig af en proprietær database.