Docker build geeft “kan context niet voorbereiden: context moet een map zijn: /Users/tempUser/git/docker/Dockerfile”

Ik heb een Dockerfile die een Ubuntu-image moet bouwen. Maar wanneer ik ren

docker build -t ubuntu-test:latest ./Dockerfile

het toont de volgende fout op de console

kan context niet voorbereiden: context moet een map zijn: /Users/tempUser/git/docker/Dockerfile

Ik gebruik Mac OsX. Ik heb ook geprobeerd om sudote gebruiken. Niets werkt.


Antwoord 1, autoriteit 100%

Je moet in plaats daarvan naar de directoryverwijzen. U mag het dockerbestand niet specificeren.

docker build -t ubuntu-test:latest .doet werk.

docker build -t ubuntu-test:latest ./Dockerfilewerkt niet.


Antwoord 2, autoriteit 51%

U kunt docker build ook uitvoeren met de optie -f

docker build -t ubuntu-test:latest -f Dockerfile.custom .


Antwoord 3, autoriteit 12%

Contexten begrijpen

De opdracht docker build

De basissyntaxis van het build-commando van docker is

docker build -t imagename:imagetag context_dir

De context

De context is een map en bepaalt wat het docker-buildproces te zien krijgt: Vanuit het oogpunt van Dockerfile wordt elk bestand context_dir/mydir/myfilein uw bestandssysteem /mydir/myfilein het Dockerbestand en dus tijdens het bouwproces.

Het dockerbestand

Als het dockerbestand Dockerfilewordt genoemd en in de context leeft, zal het impliciet worden gevonden door de naamgevingsconventie.
Dat is mooi, want het betekent dat je de Dockerfile meestal onmiddellijk in elke docker-container kunt vinden.

Als je erop staat een andere naam te gebruiken, zeg dan “/tmp/mydockerfile”, dan kun je -fals volgt gebruiken:

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

maar dan zal het dockerbestand niet in dezelfde map staan ​​of in ieder geval moeilijker te vinden zijn.


Antwoord 4, autoriteit 9%

Om een ​​Dockerfileop te geven tijdens het bouwen, kunt u het volgende gebruiken:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

Maar het zal mislukken als er een ADDof COPYcommando is dat afhankelijk is van het relatieve pad. Er zijn veel manieren om een ​​contextop te geven voor docker build, u kunt verwijzen naar docs van docker buildvoor meer info.


Antwoord 5, autoriteit 2%

Ik heb hetzelfde probleem. Ik gebruik docker version:17.09.0-ce.

Ik volg onderstaande stappen:

  1. Maak Docker-bestand en toegevoegde commando’s voor het maken van docker-afbeelding
  2. Ga naar de map waar we Dockfile hebben gemaakt
  3. voer onderstaande opdracht uit $ sudo docker build -t ubuntu-test:latest .

Het probleem is opgelost en de afbeelding is gemaakt.

Opmerking: het build-commando is afhankelijk van de docker-versie en ook van de build-optie die we gebruiken. 🙂


Antwoord 6

Het is eenvoudig, telkens wanneer Docker build wordt uitgevoerd, wil Docker weten wat de naam van de afbeelding is, dus we moeten -t : doorgeven. Zorg er nu voor dat u zich in dezelfde map bevindt waar u uw Dockerfile hebt en voer

. uit

docker build -t <image_name>:<version> .
Voorbeeld
docker build -t my_apache:latest .ervan uitgaande dat u zich in dezelfde map bevindt als uw Dockerbestand, anders geeft u de vlag -f en het Dockerbestand door.

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile


Antwoord 7

Een van de redenen waarom ik een foutmelding kreeg, was de bestandsnaam, zorg ervoor dat de bestandsnaam is
Dockerbestand
Dus ik kwam erachter, ik hoop dat het iemand kan helpen.

Other episodes