J'ai un Dockerfile
qui est censé construire une image Ubuntu
. Mais quand je cours
docker build -t ubuntu-test:latest ./Dockerfile
Il montre l'erreur suivante sur la console
impossible de préparer le contexte: le contexte doit être un répertoire:/Users/tempUser/git/docker/Dockerfile
Je suis sur Mac OsX. J'ai essayé de Sudo
aussi. Rien ne marche.
Vous devez plutôt pointer vers le répertoire. Vous ne devez pas spécifier le fichier docker.
docker build -t ubuntu-test:latest .
fait fonctionne.
docker build -t ubuntu-test:latest ./Dockerfile
fait ne fonctionne pas.
Vous pouvez également exécuter la compilation de docker avec l’option -f
docker build -t ubuntu-test:latest -f Dockerfile.custom .
Pour spécifier un Dockerfile
lors de la construction, vous pouvez utiliser:
docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile
Mais cela échouera s'il y a une commande ADD
ou COPY
qui dépend du chemin relatif. Il existe de nombreuses façons de spécifier un context
pour docker build
, vous pouvez vous référer à docs of docker build pour plus d'informations.
C'est simple, chaque fois que la construction de Docker est exécutée, Docker veut savoir quel est le nom de l'image, nous devons donc passer -t:. Maintenant, assurez-vous que vous êtes dans le même répertoire que celui où vous avez votre fichier Docker et exécutez
docker build -t <image_name>:<version> .
Exemple docker build -t my_Apache:latest .
en supposant que vous vous trouvez dans le même répertoire que votre fichier Dockerfile, sinon passez l'indicateur -f et le fichier Dockerfile.
docker build -t my_Apache:latest -f ~/Users/documents/myapache/Dockerfile
docker build
La syntaxe de base de la commande de construction de docker est la suivante:
docker build -t imagename:imagetag context_dir
Le contexte est un répertoire et détermine ce que le processus de construction de docker va voir: Du point de vue du fichier Docker, tout fichier context_dir/mydir/myfile
de votre système de fichiers deviendra /mydir/myfile
dans le fichier Dockerfile et, par conséquent, pendant le processus de construction. .
Si le fichier docker s'appelle Dockerfile
et réside dans le contexte, il sera trouvé implicitement en nommant la convention. C'est bien, car cela signifie que vous pouvez généralement trouver immédiatement le fichier Docker dans n'importe quel conteneur docker.
Si vous insistez pour utiliser un nom différent, dites "/ tmp/mydockerfile", vous pouvez utiliser -t
comme ceci:
docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir
mais alors le fichier de docker ne sera pas dans le conteneur ou sera au moins plus difficile à trouver.
Je suis confronté au même problème. J'utilise docker version:17.09.0-ce
.
Je suis les étapes ci-dessous:
$ Sudo docker build -t ubuntu-test:latest .
Il a résolu le problème et l'image créée avec succès.
Remarque: la commande de construction dépend de la version de docker ainsi que de l’option de construction utilisée. :)