Docker w systemie Windows 10 „sterownik nie powiódł się z programowaniem łączności zewnętrznej w punkcie końcowym”


134

Próbuję użyć $ docker-compose up -ddla projektu i otrzymuję ten komunikat o błędzie:

BŁĄD: dla interfejsu API nie można uruchomić interfejsu API usługi: sterownik nie może programować łączności zewnętrznej w punkcie końcowym dataexploration_api_1 (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): Błąd podczas uruchamiania serwera proxy użytkownika: mkp9: 0: 0: 0, 19: 0. Napotkano błędy podczas uruchamiania projektu.

Zastanawiam się, czy to może port? Wcześniej próbowałem portu 8080. Projekt został pierwotnie skonfigurowany na komputerze Mac i sklonowałem repozytorium z gitHub.


Dodaj link do zgłoszenia na githubie, abyśmy wszyscy mogli tam przejść i zagłosować.
— PussInBoots

Odpowiedzi:


270

Otrzymałem ten sam komunikat o błędzie na moim Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 przy użyciu Windows Powershell x86 w trybie administratora.

Rozwiązaniem było po prostu ponowne uruchomienie Dockera.


I user docker Version 18.03.0-ce-win59 (16762) w systemie Windows 10 Professional. Obraz Dockera to jenkins / jenkins: 2.107.2. Po ściągnięciu używam tego polecenia do instalacji docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Po ustawieniu jenkinsa używam docker stop myJenkinsw innym oknie poleceń i zamykam system Windows 10. Kiedy uruchamiam system Windows 10, który automatycznie uruchamia docker, używam polecenia docker start myJenkinsi otrzymuję znajomą wiadomość. Jednak ponowne uruchomienie dockera rozwiązało problem :)
— Charles Wu

1
Czy ktoś wie, dlaczego tak się dzieje? Ponowne uruchamianie dockera wydaje się nieudane, czy istnieje sposób na prawidłowe rozwiązanie tego problemu?
— Storm Muller

Ta sama poprawka zadziałała w przypadku mnie w marcu 2019 r. Używając Docker Desktop w wersji 2.0.0.3 (31259) Kanał: stabilny Kompilacja: 8858db3 Klient: Docker Engine - Wersja społeczności: 18.09.2 Wersja API: 1.39 Go Wersja: go1.10.8 Git commit: 6247962 Data budowy: niedziela 10 lutego 04:12:31 2019 System operacyjny / Arch: windows / amd64 Eksperymentalny: fałszywy Win 10 Wersja 10.0.18346.1 (szybka wersja przedpremierowa)
— JohnC

miał ten sam problem na Macu i ponowne uruchomienie dockera również go naprawiłem ... Jezu Powinienem był sprawdzić twoją odpowiedź przed ponownym zainstalowaniem całego środowiska
— dockera

67

Jeśli zdarzy się raz, ponowne uruchomienie Dockera wykona pracę. W moim przypadku działo się to za każdym razem, gdy restartowałem komputer.

W takim przypadku wyłącz Szybkie uruchamianie lub prawdopodobnie uruchomisz ponownie Dockera za każdym razem, gdy uruchomisz komputer. To rozwiązanie uzyskano stąd


6
Należy to przyjąć jako odpowiedź. Restart działa, ale kiedy musisz to zrobić za każdym razem, gdy staje się irytujący
— Vitalii

Otrzymałem ten błąd podczas przełączania użytkowników na Windows 10
— Vasko

58

Po prostu ponowne uruchomienie Dockera nie rozwiązało problemu w systemie Windows 10.

W moim przypadku rozwiązałem problem, wykonując poniższe czynności:

1) Zamknij „Docker Desktop”

2) Uruchom poniższe polecenia:

net stop com.docker.service
net start com.docker.service

3) Ponownie uruchom „Docker Desktop”

Mam nadzieję, że to pomoże komuś innemu.


3
To działa dla mnie po wypróbowaniu samego restartu dockera! Nie zapomnij też uruchomić tej pary z uprawnieniami administratora
— Gad Wissberg,

Działało, ale nie mam uprawnień administratora przez cały czas :(
— Hassan Tareq

3
Udało mi się zrestartować usługę dockera, zwykle wystarczył restart pulpitu dockera, ale nie tym razem ...
— docker w systemie

To zadziałało! Powinna to być prawdziwa akceptowana odpowiedź. Dzięki
— Dominik K

Pracowało dla mnie, dzięki!
— G.Mast

9

Otrzymałem również ten błąd, jeśli chcesz poznać główny powód wystąpienia błędu, ponieważ docker ma już uruchomiony podobny kontener, aby rozwiązać problem (unikaj ponownego uruchamiania Dockera), musisz:

docker container ls

Masz coś podobnego do:

CONTAINER ID        IMAGE               COMMAND             CREATED
1fa4ab2cf395        friendlyhello       "python app.py"     28 seconds ago

To jest lista uruchomionych kontenerów, weź ID KONTENERA (kopiuj Ctrl+ C)

Teraz musisz zakończyć proces (i pozwolić uruchomić inny obraz) i uruchomić to polecenie.

docker container stop <CONTAINER_ID>

I to wszystko! Teraz możesz stworzyć kontener.

Aby uzyskać więcej informacji, odwiedź https://docs.docker.com/get-started/part2/


7

Zdaję sobie sprawę, że odpowiedzi jest już wiele, ale żadna z nich nie rozwiązała problemu za mnie.
Zamiast tego pozbyłem się tego komunikatu o błędzie, resetując docker do ustawień fabrycznych :

wprowadź opis obrazu tutaj


Czy przed zrobieniem tego miałeś jakiś raport o błędzie z Dockera, ponieważ w moim przypadku wyskoczyło coś w rodzaju błędu z sugestią przywrócenia ustawień fabrycznych.
— Theodosios Asvestopoulos

Nie, @TheodosiosAsvestopoulos, nie dostałem tego wyskakującego okienka.
— jasie

Dziwne, że miałem dzisiaj ten sam problem, ponowne uruchomienie dockera nie pomogło. Nie chciałem ponownie przywracać ustawień fabrycznych, ponieważ pobieramy naprawdę duże obrazy, więc po prostu opuściłem Docker Desktop i otworzyłem go ponownie i zadziałało (wydaje się, że to inna akcja niż tylko ponowne uruchomienie).
— Theodosios Asvestopoulos

6

Zwykle ten błąd występuje, gdy próbujesz uruchomić kontener, ale porty, których potrzebuje kontener, są zajęte, zwykle przez ten sam Docker, jak w wyniku zatrzymania ostatniego złego procesu.

Dla mnie rozwiązaniem jest:

  1. Otwórz CMD systemu Windows, taki jak administrator, wpisz, netstat -oanaby znaleźć proces (Docker to ten proces), który zajmuje twój port:

W moim przypadku moje porty docker to 3306 6001 8000 9001.

  1. Teraz musimy zwolnić te porty, więc zabijamy ten proces przez PID (kolumna PID), wpisz

    TASKKILL /PID 9816 /F
    
  2. Uruchom ponownie okno dokowane.

  3. Bądź szczęśliwy.

Pozdrowienia.


2

W moim przypadku problem polegał na tym, że kontener docker (Nginx) używa portu 80, a IIS używa tego samego. Skonfigurowanie innego portu w usługach IIS rozwiązuje problem


1

W większości przypadków pierwszym przypadkiem, o którym należy pomyśleć, jest to, że na tym porcie działa stara usługa. W moim przypadku, ponieważ zmieniam nazwę obrazu, to przy użyciu docker-compose do zatrzymania (potem do góry), nie zatrzyma starego kontenera (usługi), nie można uruchomić nowego kontenera.


0

Trochę późna odpowiedź, ale zostawię ją tutaj, może pomóc komuś innemu Na komputerze Mac mojave po wielu ponownych uruchomieniach zarówno Maca, jak i Dockera, które musiałem sudo apachectl stop.


0
  • Najprostszym sposobem rozwiązania tego problemu jest ponowne uruchomienie dokera. Ale w niektórych przypadkach może to nie działać, nawet jeśli nie masz żadnych kontenerów uruchomionych w porcie. Możesz sprawdzić uruchomione kontenery za pomocą docker pspolecenia i zobaczyć wszystkie kontenery, które nie zostały wyczyszczone, ale zostały zamknięte przed użyciem docker ps -apolecenia.

Wyobraź sobie, że istnieje kontener, który ma identyfikator kontenera 8e35276e845e. Możesz użyć polecenia docker rm 8e35276e845elub docker rm 8e3zakończyć kontener. Zauważ, że pierwsze 3 ciągi to identyfikator tego konkretnego identyfikatora kontenera dockera. Zatem zgodnie z powyższym scenariuszem 8e3 to identyfikator 8e35276e845e .

  • Jeśli ponowne uruchomienie nie zadziała, możesz spróbować zmienić porty usług w pliku docker-compose.yml i zgodnie z portem apache musisz zmienić port v-hosta (jeśli taki istnieje). problem.

Dawny:

    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8082:80
    depends_on:
      - mysql_db

należy zmienić na

apache_server:
    build:
      context: ./apache
      dockerfile: Dockerfile
    working_dir: /var/www/
    volumes:
      - .:/var/www
    networks:
      - app-network
    ports:
      - 8083:80
    depends_on:
      - mysql_db

a konkretny v-host również musi zostać zmieniony,

Ex (według powyższego scenariusza):

<VirtualHost *:80> 
    ProxyPreserveHost On
    ServerAlias phpadocker.lk
    ProxyPass / http://localhost:8083/
    ProxyPassReverse / http://localhost:8083/
</VirtualHost>

Pomoże ci to rozwiązać powyższy problem.


0

Dla wielu użytkowników systemu Windows, którzy mają ten sam problem, sugerowałbym również ponowne uruchomienie komputera, ponieważ w większości przypadków (przynajmniej dla mnie) ponowne uruchamianie tylko Dockera nie działa. Proponuję więc wykonać następujące kroki:

  1. Uruchom ponownie komputer.
  2. Następnie uruchom PowerShell jako administrator i uruchom to:

    Set-NetConnectionProfile -interfacealias "vEthernet (DockerNAT)" -NetworkCategory Private

  3. Następnie uruchom ponownie Docker.

Po wykonaniu tych czynności będziesz mógł działać bez problemów. Mam nadzieję że to pomogło.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.