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.

Sockness_Rogers
źródło
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.

Jens Christian Eldøy
źródło
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

chomp
źródło
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.

Mohammed Réda OUASSINI
źródło
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/

Andres Rodriguez
źródło
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

jasie
źródło
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.

Jhon Didier Sotto
źródło
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

Артур Камильянов
źródło
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.

Phuoc Quach ngoc
źródło
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.

Tarek
źródło
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.

Hirumina
źródło
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.

Donald Shahini
źródło