Właśnie pobrałem dzisiaj Docker Toolbox dla Windows 10 64bit. Przechodzę samouczek. Otrzymuję następujący błąd podczas próby zbudowania obrazu za pomocą pliku Docker.
Kroki:
- Uruchomiono terminal Docker Quickstart.
- testdocker po utworzeniu.
- Przygotuj plik Dockerfile zgodnie z dokumentacją w łączu internetowym „Buduj własny obraz”
- pobiegł poniżej polecenia
docker build -t docker-whale .
Error: $ docker build -t docker-whale .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx C:\Users\Villanueva\Test\testdocker\Dockerfile: The system cannot find the file specified.
BTW: Wypróbowałem kilka wymienionych opcji @ https://github.com/docker/docker/issues/14339
$ docker info
Containers: 4
Running: 0
Paused: 0
Stopped: 4
Images: 2
Server Version: 1.10.1
Storage Driver: aufs
Root Dir: /mnt/sda1/var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 20
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Plugins:
Volume: local
Network: bridge null host
Kernel Version: 4.1.17-boot2docker
Operating System: Boot2Docker 1.10.1 (TCL 6.4.1); master : b03e158 - Thu Feb 11 22:34:01 UTC 2016
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 996.2 MiB
Name: default
ID: C7DS:CIAJ:FTSN:PCGD:ZW25:MQNG:H3HK:KRJL:G6FC:VPRW:SEWW:KP7B
Debug mode (server): true
File Descriptors: 32
Goroutines: 44
System Time: 2016-02-19T17:37:37.706076803Z
EventsListeners: 0
Init SHA1:
Init Path: /usr/local/bin/docker
Docker Root Dir: /mnt/sda1/var/lib/docker
Labels:
provider=virtualbox
docker
dockerfile
villanux
źródło
źródło
docker build -t XXX --file ./Dockefile
może to wynikać z błędnej nazwy pliku, brakuje R.Odpowiedzi:
podczas wykonywania następującego polecenia:
sprawdź, czy plik Docker znajduje się w bieżącym katalogu roboczym.
źródło
f
flagą, ponieważ wdocker build -f Dockerfile-dev.yaml -t my_container .
Może to okazać się przydatne, jeśli masz w swoim projekcie kilka Dockerfile, na przykład jeden na środowisko. To samo dotyczy komponowania dokerów. Umieszczanie ich w różnych podkatalogach nie będzie działać, ponieważ kontekst (.
) nie będzie pasował.Szkoda!
Komunikat o błędzie wprowadza w błąd. Problem nie ma tak naprawdę nic wspólnego z dowiązaniami symbolicznymi. Zwykle tylko doker nie może znaleźć pliku Docker opisującego kompilację.
Typowe przyczyny to:
To musi być nazwane
Dockerfile
. Jeśli to się nazywa, na przykładdockerfile
,.Dockerfile
,Dockerfile.txt
, lub inne, nie będzie można znaleźć.Jeśli powiesz
docker build contextdir
, plik Docker musi znajdować się wcontextdir/Dockerfile
. Jeśli go masz, powiedzmy./Dockerfile
, że go nie znajdziesz.Brzmi głupio? Cóż, otrzymałem powyższy komunikat o błędzie z mojego GitLab CI po napisaniu ładnego pliku Docker, ale zapomniałem go sprawdzić. Głupie? Pewnie. Mało prawdopodobne? Nie.
To nie jedyny wstyd ...
Nie tylko ten jeden komunikat o błędzie jest niejasny i mylący. Generalnie uważam, że niektóre koncepcje dokerów i duża część dokumentacji są semantycznie nieprecyzyjne.
Jednym z naprawdę złych punktów jest pojęcie „tag” (stan na sierpień 2019 r.). W zależności od tego, gdzie znajduje się dokumentacja, mówi o wszystkich następujących rzeczach (mniej lub bardziej wyraźnie):
tag
polecenie, ale podany argument nie jest nazywany znacznikiem ani nazwą znacznika, ale nazywany jest nazwą obrazu.tag
argumencie polecenia nazwa znacznika jest opcjonalna, ale nazwa obrazu jest obowiązkowa. Oczywisty.docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
x
w (lub wcześniej, ale jakoś magicznie zawsze przylega) do jego nazwy obrazu powinien wtedy żyć na tym hościex
(w rejestrze). Jeśli chcesz uzyskać dostęp do takiego obrazu, musisz mniej więcej użyć tej nazwy z prefiksem hostax
.x
, ponieważ „wypychanie” obrazux
to osobna operacja.Jeśli jesteś tym zmieszany, to nie twoja wina.
Koniec rant.
źródło
Jeśli pracujesz na systemie Windows 8, będziesz używać przybornika Docker. Z katalogu mydockerbuild uruchom poniższe polecenie, ponieważ plik Docker jest plikiem tekstowym
źródło
docker build -t friendlyhello -f ./Dockerfile.txt .
Nazwa pliku powinna być
Dockerfile
i nie.Dockerfile
. Plik nie powinien mieć żadnego rozszerzenia.źródło
Nazwałem plik dockerfile zamiast Dockerfile (wielkie litery), a kiedy to zmieniłem, zaczął przetwarzać mój „Dockerfile”.
źródło
Wystarczy usunąć rozszerzenie .txt z Dockerfile i uruchomić polecenie
Na pewno zadziała.
źródło
Mam ten błąd (w MacBooku), chociaż użyłem poprawnego polecenia, aby utworzyć obraz,
Później odkryłem, że ścieżka jest problemem. Wystarczy przejść do właściwej ścieżki zawierającej plik dokera. Wystarczy dwukrotnie sprawdzić bieżący katalog roboczy. Nie ma powodów do paniki!
źródło
W Windows 10 ... kropka jest pierwszym parametrem
docker build . -t docker-whale
źródło
docker build -t docker-whale .
prawidłowym poleceniemPo prostu dlatego, że Notatnik dodaje „.txt” na końcu Dockerfile
źródło
W WSL wydaje się występować problem z konwersją ścieżek. Lokalizacja Dockerfile w Ubuntu (gdzie uruchamiam dokera i gdzie Dockerfile mieszka) to „/ home / sxw455 / App1”, ale żadne z tych poleceń nie działało:
Ale w systemie Windows rzeczywista ścieżka to:
Więc musiałem to zrobić (mimo że uruchomiłem to z bash):
Miałem podobne problemy ze zmiennymi środowiskowymi podczas pierwszej instalacji i postępowałem zgodnie z kilkoma wskazówkami, aby zainstalować Windows DockerCE i zhakować zmienne środowiskowe zamiast instalować Ubuntu DockerCE, ponieważ (mam nadzieję, że dobrze to zapamiętałem), że WSL nie w pełni implementuje systemctl. Po zakończeniu instalacji Windows Docker CE i ustawieniu zmiennych środowiskowych doker działa poprawnie pod WSL / Ubuntu.
źródło
Utworzyłem mój plik DockerFile według VS2017 Docker Support i miałem ten sam błąd. Po chwili zdałem sobie sprawę, że nie ma mnie w odpowiednim katalogu, który zawiera plik Docker
(~\source\repos\DockerWebApplication\)
. cd'ed do właściwego pliku,(~/source/repos/DockerWebApplication/DockerWebApplication)
który był w projekcie i pomyślnie utworzył obraz dokera.źródło
Poniższe polecenie działało dla mnie docker build -t docker-whale -f Dockerfile.txt.
źródło
Dwa sposoby na zbudowanie pliku docker:
Możesz zdecydować, aby nie podawać nazwy pliku, z którego chcesz budować, i po prostu skompiluj go, podając ścieżkę (w ten sposób nazwa pliku musi być
Dockerfile
bez dołączonego rozszerzenia, np .:docker build -t docker-whale:tag path/to/Dockerfile
lub
Można określić plik
-f
i nie ma znaczenia, jakie rozszerzenie (w granicach rozsądku.txt
,.dockerfile
,.Dockerfile
etc ..) użytkownik zdecyduje się użyć, npdocker build -t docker-whale:tag /path/to/file -f docker-whale.dockerfile
.źródło
Pierwotnie utworzyłem mój plik Docker w programie PowerShell i chociaż nie widziałem rozszerzenia pliku, który pokazywał jako typ pliku PS ... po utworzeniu pliku z Notepad ++ koniecznie wybrałem plik „Wszystkie typy ( . )” Wpisz bez rozszerzenia w nazwie pliku (Dockerfile). Dzięki temu moje polecenie kompilacji obrazu zakończyło się pomyślnie ... Upewnij się, że plik Docker ma typ „Plik” ...
źródło
Problem polega na tym, że nazwa pliku powinna być Dockerfile, a nie DockerFile lub dockerfile powinna to być litera D, a po niej ockerfile małymi literami
źródło
Upewnij się, że Twój
DOCKERfile
znajduje się w katalogu głównym aplikacji, miałem mój w src, co spowodowało ten błąd, ponieważ Docker nie znalazł ścieżki doDOCKERfile
źródło
Aby zbudować plik Dockerfile, zapisz zautomatyzowaną zawartość w Dockerfile. nie Dockerfile, ponieważ podczas otwierania polecenia pliku:
(Plik tekstowy jest zapisywany, więc nie można go zbudować)
Aby skompilować uruchomienie pliku:
a teraz uruchom:
Upewnij się, że znajdujesz się w bieżącym katalogu Dockerfile.
źródło
Co najważniejsze, upewnij się, że nazwa twojego pliku brzmi,
Dockerfile
jeśli użyjesz innej nazwy, to nie zadziała (przynajmniej dla mnie nie.)Także jeśli jesteś w tym samym katalogu, w którym znajduje się plik Docker, użyj
.
iedocker build -t Myubuntu1:v1 .
lub użyj ścieżki bezwzględnej iedocker build -t Myubuntu1:v1 /Users/<username>/Desktop/Docker
źródło
Mój przypadek (uruchamiany z systemu Windows 10)
1) Zmień nazwę pliku
myDockerFile.Dockerfile
naDockerfile
( bez rozszerzenia pliku).Następnie należy uruchomić z zewnątrz folderze tego polecenia:
To działa dla mnie i dla moich kolegów w pracy, mam nadzieję, że to również zadziała dla ciebie
źródło
Upewnij się, że nazwa pliku „Dockerfile” nie jest zapisana z żadnym rozszerzeniem. Wystarczy utworzyć plik bez żadnego rozszerzenia.
I upewnij się, że plik Dockerfile znajduje się w tym samym katalogu, w którym próbujesz zbudować obraz dokera.
źródło
W przypadku, gdy w naszym środowisku znajduje się wiele plików dokerów, po prostu plik Docker nie spełni naszych wymagań.
Więc użyj
file
komendy (-f argument), aby określić plik dokera (Dockerfile.ihub)źródło
.
(kropki) na końcu linii, jak pokazano powyżej.docker build
jest tutaj: docs.docker.com/engine/reference/commandline/buildDostałem to w systemie Windows, gdy ścieżka, w której pracowałem, znajdowała się w katalogu Junction. Więc moja poprawka polegała na tym, żeby nie działać pod tą ścieżką.
źródło
W systemie Mac działa dla polecenia poniżej. (mam nadzieję, że
.Dockerfile
jest w twoim katalogu głównym).źródło
Problem związany jest z procedurą tworzenia DockerFile.
Aby pracować, otwórz cmd, cd do katalogu z zainteresowaniami i wpisz:
Spowoduje to utworzenie pliku o nazwie DockerFile w twoim folderze.
Teraz wpisz:
Spowoduje to otwarcie pliku DockerFile w notatniku i będziesz musiał skopiować / wkleić dostarczony standardowy kod.
Zapisz plik, a teraz nareszcie skompiluj obraz, wpisując Docker:
To działa dla mnie i mam nadzieję, że pomaga innym
źródło
Błędnie utworzyłem
Dockerfile.txt
w moim katalogu roboczym, co prowadzi do wyżej wymienionego błędu podczasbuild
Poprawka polegała na usunięciu
.txt
rozszerzenia z pliku.Nazwa pliku powinna być
Dockerfile
tylko bez rozszerzenia .źródło
Uruchom
docker build -t getting-started .
w katalogu projektu i upewnij się, że plik Docker jest obecny i nie ma.txt
rozszerzenia. Jeśli korzystasz z systemu Windows, zaznacz „rozszerzenie nazwy pliku” na karcie widoku w Eksploratorze plików, aby pokazać, czy plik .txt istnieje, czy nie, i usuń go, jeśli to pierwsze jest prawdziwe. Powodzenia.źródło
Napotkałem również te same problemy i problem został rozwiązany, gdy utworzyłem plik o nazwie DockerFile i wspomniałem o wszystkich poleceniach, które chciałyby zostać wykonane podczas tworzenia dowolnego obrazu.
źródło
Błąd oznacza, że
docker build
albo korzysta zPATH | URL
niepoprawnie wprowadzonych danych, alboDockerfile
nie można ich znaleźć w bieżącym katalogu. Upewnij się również, że podczas uruchamiania polecenia ze zintegrowanego terminala (np. Wbash
twoim IDE lub edytorze tekstowym) masz uprawnienia administratora, aby to zrobić. Najlepiej, jeśli możesz sprawdzić wPATH
swoim terminalu za pomocąpwd
(wbash shell
lubdir
jeśli używasz prostego w systemiecli
Windows) i skopiuj dokładną ścieżkę, w której chcesz zbudować obraz.docker build C:\windows\your_amazing_directory
docker build --help
pokaże również dostępne opcje, które można wykorzystać w przypadku źle sformułowanych lub nielegalnych poleceń.źródło
Próbowałem tego i zadziałało:
Zobacz cudzysłowy + cofnij cudzysłowy wokół nazwy folderu.
Uwaga: W folderze
"C:\Users\ssundarababu\Documents\Docker\Learn\SimpleDockerfile"
mam mój plik Docker.źródło
Aby zbudować obraz z wiersza poleceń w systemie Windows / Linux. 1. Utwórz plik dokera w bieżącym katalogu. np .: Z Ubuntu RUN apt-get update RUN apt-get -y zainstaluj apache2 ADD. / var / www / html ENTRYPOINT apachectl -D FOREGROUND ENV nazwa Devops_Docker 2. Nie zapisuj go z rozszerzeniem .txt. 3. W wierszu polecenia uruchom kompilację dokera poleceń. -t apache2image
źródło