Ga naar de inhoud
Home » Docker-Compose: Implementatie van stack mislukt: service verwijst naar ongedefinieerd volume – Oplossing

Docker-Compose: Implementatie van stack mislukt: service verwijst naar ongedefinieerd volume – Oplossing

Advertisements

Some of the links shared in this post are affiliate links. If you click on the link and make a purchase, we will receive an affiliate commission at no additional cost to you.


Soms kan het gebeuren dat de volgende foutmelding verschijnt bij het starten van de Docker Compose Stack, natively of via Portainer:

Failed to deploy a stack: service "docker" refers to undefined volume mnt/docker: invalid compose project

De fout “Failed to deploy a stack: service ‘docker’ refers to undefined volume mnt/docker: invalid compose project” treedt op als een volume wordt gedefinieerd in een Docker Compose-bestand dat niet correct is opgegeven of verwijst naar een map die niet bestaat.

Foutbeschrijving

De fout treedt meestal op omdat het Docker Compose-bestand(docker-compose.yml) een volumepad of volumelabel bevat die ofwel:

  • isniet correct geformatteerd,
  • niet bestaat of
  • wasniet duidelijk gedefinieerd.

De foutmelding geeft aan dat het volume mnt/docker niet correct is gedefinieerd of dat er niet correct naar wordt verwezen. Dit betekent dat Docker Compose het opgegeven pad niet kan oplossen of aanmaken.

Mogelijke oorzaken

  1. Ontbrekende voorloop schuine streep: Het pad naar het volume begint niet met een /. Hierdoor interpreteert Docker het pad als een relatief pad, wat onjuist is.
  2. Directory bestaat niet: Het opgegeven directorypad(/mnt/docker) bestaat niet op het hostsysteem.
  3. Typefout of onjuiste syntaxis: Een typefout in het pad of in het samenstelbestand leidt tot een onjuiste definitie.
  4. Volumedefinitie ontbreekt of is onjuist geplaatst: Als een genoemd volume wordt gebruikt, moet dit worden gedefinieerd onder volumes: in het compose-bestand.

Oplossingsstappen

1. Controleer en corrigeer het volumepad

  • Het pad in het Docker Compose bestand moet absoluut en correct zijn.
  • Controleer of het pad bestaat op het hostsysteem.

Voorbeeld:

services:
  my_service:
    image: my_image:latest
    volumes:
      - /mnt/docker:/data

Controleer of /mnt/docker bestaat. Als dat niet het geval is, maak het dan aan met het commando:

sudo mkdir -p /mnt/docker

2. controleer het pad op typefouten

Let op mogelijke typefouten in de volumespecificatie en corrigeer ze.

Fout:

Geen leidende “/”

volumes:
  - mnt/docker:/data

Correct:

Leidende “/”

volumes:
  - /mnt/docker:/data  

3. benoemde volumes correct gebruiken

Als je volumes met een naam wilt gebruiken, moet je deze expliciet definiëren onder volumes: in het Compose-bestand:

Voorbeeld voor volumes met naam:

version: '3'

services:
  app:
    image: my_image:latest
    volumes:
      - mydata:/data

volumes:
  mydata:
    driver: local
    driver_opts:
      type: none
      o: bind
      device: /mnt/docker

Het genoemde volume mydata wordt hier gedefinieerd en gekoppeld aan het pad /mnt/docker. Het apparaatveld moet verwijzen naar een bestaande map.

4. Controleer of de mappen bestaan en de juiste machtigingen hebben.

Controleer de autorisaties en het bestaan van de map. Docker moet toegang hebben tot het opgegeven pad en ernaar kunnen schrijven:

ls -ld /mnt/docker

Moet ervoor zorgen dat het pad bestaat en leesbaar/beschrijfbaar is. Als dat niet het geval is, stel dan de autorisaties dienovereenkomstig in:

sudo chmod 755 /mnt/docker
sudo chown $USER:$USER /mnt/docker

5. Controleer de versie van Docker Compose

Zorg ervoor dat het gebruikte Docker Compose-bestand overeenkomt met de geïnstalleerde Docker Compose-versie. Gebruik versie 3 of hoger om named volumes en andere geavanceerde functies te gebruiken.

De fout “service ‘docker’ refers to undefined volume mnt/docker” treedt op wanneer volumes niet correct zijn gedefinieerd of wanneer de paden onjuist zijn. Het probleem kan meestal worden opgelost door het Docker Compose-bestand en de mapstructuur zorgvuldig te controleren en te corrigeren en ervoor te zorgen dat de genoemde volumes correct zijn gedefinieerd.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Mastodon