Windows 10'da Docker “sürücü bitiş noktasında harici bağlantı programlanamadı”


134

$ docker-compose up -dBir proje için kullanmaya çalışıyorum ve bu hata iletisini alıyorum:

HATA: api için hizmet başlatılamıyor api: sürücü bitiş noktası veri dışa aktarma programlanamadı başarısız veri arama Projeyi getirirken karşılaşılan hatalar.

Belki de liman olup olmadığını merak ediyorum. Daha önce 8080 numaralı bağlantı noktasını deniyordum. Proje başlangıçta bir mac üzerine kurulmuş ve gitHub'dan depoyu klonladım.


Lütfen github biletine bir bağlantı ekleyin, böylece hepimiz oraya gidip onu oylayabiliriz.
pussinboots

Yanıtlar:


270

Yönetici modunda Windows Powershell x86 kullanarak Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 sürümümde aynı hata iletisini aldım.

Çözüm, Docker'ı yeniden başlatmaktı.


Windows 10 Professional'da docker Sürüm 18.03.0-ce-win59 (16762) kullanıyorum. Docker Görüntüsü jenkins / jenkins: 2.107.2. Çekildikten sonra yüklemek için bu komutu kullanıyorum docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Cenkins ayarını yaptıktan sonra docker stop myJenkins, diğer komut penceresinde kullanıyorum ve ana bilgisayarım Windows 10'u kapatıyorum. Docker'ı otomatik olarak başlatan Windows 10'u başlattığımda, komutu kullanıyorum docker start myJenkinsve tanıdık mesajı alıyorum. Ancak, liman işçisinin yeniden başlatılması sorunu çözüyor :)
Charles Wu

1
Bunun neden olduğunu bilen var mı? Docker'ı yeniden başlatmak hacky gibi görünüyor, bunu doğru bir şekilde çözmenin bir yolu var mı?
Storm Muller

Aynı düzeltme Mart 2019'da benim için çalıştı. Docker Desktop Sürüm 2.0.0.3'ü (31259) kullanma Kanal: kararlı Yapım: 8858db3 İstemci: Docker Engine - Topluluk Sürümü: 18.09.2 API sürümü: 1.39 Git sürüm: go1.10.8 Git kesin: 6247962 Yapım Yılı: Paz 10 Şub 04:12:31 2019 OS / Arch: windows / amd64 Deneysel: yanlış Win 10 Sürüm 10.0.18346.1 (ön sürümün hızlı sürümü)
JohnC

Mac'te aynı sorunu vardı ve liman işçisini yeniden başlatmak da düzeltti ... İsa Tüm liman ortamını yerel olarak yeniden yüklemeden önce cevabınızı kontrol etmeliydim ....: D şerefe dostum
Sosomqk

67

Bir kez olursa, Docker'ı yeniden başlatmak işi yapar. Benim durumumda, bilgisayarımı her yeniden başlattığımda oluyordu.

Bu durumda, Hızlı Başlangıç'ı devre dışı bırakın, aksi takdirde bilgisayarınız her başlatıldığında Docker'ı yeniden başlatacaksınız. Bu çözüm buradan elde edildi


6
Bu bir cevap olarak kabul edilmelidir. Yeniden başlatma çalışır, ancak her zaman sinir bozucu hale geldiğinde yapmanız gerekir
Vitalii

Windows 10'da kullanıcıları değiştirirken bu hatayı aldım
Vasko

58

Docker'ı yeniden başlatmak, Windows 10'da benim için sorunu çözmedi.

Benim durumumda, aşağıdaki tam adımlarla sorunu çözdüm:

1) "Docker Masaüstü" nü kapatın

2) Aşağıdaki komutları çalıştırın:

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

3) "Docker Masaüstü" nü tekrar başlatın

Umarım bu başka birine yardımcı olur.


3
Bu sadece bir liman işçisi yeniden başlatmayı denedikten sonra benim için çalışıyor! Ayrıca, bu çifti yönetici ayrıcalığı ile çalıştırmayı da unutmayın
Gad Wissberg

Çalıştı, ama her zaman yönetici ayrıcalığım yok :(
Hassan Tareq

3
Beni liman işçisi hizmetini yeniden başlatmak için çalıştı, genellikle sadece bir liman işçisi masaüstü yeniden başlatma yeterliydi ama bu sefer ... pencereler 10 liman işçisi (gecikmeleri, böcek, doc, ...) gerçekten acı verici
a11r

Bu işe yaradı! Kabul edilen gerçek cevap olmalı. Teşekkürler
Dominik K

Benim için çalıştı, teşekkürler!
G.Mast

9

Bu hatayı da aldım, hatanın neden olmasının ana nedenini bilmek istiyorsanız, bunun nedeni docker'ın zaten benzer bir kap çalıştırmasıdır, sorunu çözmek için (Docker'ı yeniden başlatmaktan kaçının):

docker container ls

Şuna benzer bir şeyiniz var:

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

Bu çalışan kapsayıcı bir listesi, KONTEYNER kimliğini almak (kopyasıdır Ctrl+C ) alın

Şimdi bu komutu çalıştırmanız (ve başka bir görüntü çalıştırmanıza izin vermeniz) gerekiyor.

docker container stop <CONTAINER_ID>

Ve hepsi bu! Şimdi kapsayıcı oluşturabilirsiniz.

Daha fazla bilgi için https://docs.docker.com/get-started/part2/ adresini ziyaret edin.


7

Zaten çok cevap olduğunu biliyorum, ama hiçbiri benim için sorunu çözmedi.
Bunun yerine, docker'ı fabrika varsayılanlarına sıfırlayarak bu hata mesajından kurtuldum :

resim açıklamasını buraya girin


Bunu yapmadan önce Docker'dan herhangi bir hata raporu aldınız mı, çünkü benim durumumda fabrika varsayılanlarına sıfırlama önerisiyle hata gibi bir şey açtım.
Theodosios Asvestopoulos

Hayır, @TheodosiosAsvestopoulos, o pop-up'ı alamadım.
jasie

Garip bugün yine aynı sorunu yaşadım, docker yeniden başlatma yardımcı olmadı. Fabrika varsayılanlarına sıfırlamak istemedim, çünkü gerçekten büyük görüntüler çekiyoruz, bu yüzden Docker Desktop'tan çıkıp tekrar açtım ve işe yaradı (sadece yeniden başlatmaktan farklı bir eylem gibi görünüyor).
Theodosios Asvestopoulos

6

Normalde bu hata, bir kapsayıcı başlatmaya çalıştığınızda oluşur, ancak kapsayıcıya gereken bağlantı noktaları, genellikle aynı Docker tarafından durdurulması en son bozuk bir işlemin sonucu olarak oluşur.

Benim için çözüm:

  1. Windows netstat -oanCMD'yi yönetici gibi açın , bağlantı noktanızı oluşturan işlemi (Docker o işlemdir) bulmak için yazın:

Benim durumumda liman limanlarım 3306 6001 8000 9001.

  1. Şimdi bu portları serbest bırakmalıyız, bu yüzden bu işlemi PID (colum PID),

    TASKKILL /PID 9816 /F
    
  2. Bağlantı istasyonunu yeniden başlatın.

  3. Mutlu ol.

Saygılarımızla.


2

Benim durumumda, sorun docker kapsayıcısının (Nginx) 80 bağlantı noktası kullanması ve IIS'nin de aynı şekilde kullanmasıydı. IIS'de başka bir bağlantı noktası kurma sorunu çözme


1

Çoğu durumda, düşünmeniz gereken ilk durum, bu bağlantı noktasını çalıştıran ve kullanan eski bir hizmet olmasıdır. Benim durumumda, görüntü adını değiştirdiğimden, daha sonra durdurmak için docker-compose kullanırken (sonra yukarı), eski kapsayıcıyı (hizmet) durdurmaz, yeni kapsayıcı başlatılamaz.


0

Biraz geç cevap ama burada bırakacağım başka birine yardımcı olabilir Mac mac ve docker bir sürü yeniden başlattıktan sonra bir Mac mojave sudo apachectl stop.


0
  • Bunu çözmenin en basit yolu liman işçisini yeniden başlatmaktır. Ancak bazı durumlarda, bağlantı noktasında çalışan kaplarınız olmasa bile çalışmayabilir. docker psKomut kullanarak çalışan kapsayıcıları kontrol edebilir ve docker ps -akomutu kullanmadan önce temizlenmemiş ancak çıkmış olan tüm kapları görebilirsiniz .

Konteyner kimliği olan bir kapsayıcı olduğunu düşünün 8e35276e845e.Arzu komutunu kullanabilirsiniz docker rm 8e35276e845eveya docker rm 8e3konteyner bitirmek için. İlk 3 dizenin ilgili docker kapsayıcı kimliğinin kimliği olduğunu unutmayın. Dolayısıyla yukarıdaki senaryoya göre 8e3 , 8e35276e845e'nin id'sidir .

  • Yeniden başlatma işe yaramazsa, docker-compose.yml dosyasındaki hizmetlerin bağlantı noktalarını değiştirmeyi deneyebilirsiniz ve apache bağlantı noktasına göre v-host'un bağlantı noktasını (varsa) değiştirmeniz gerekir. sorun.

Ör:

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

olarak değiştirilmeli

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

ve belirli v-host da değiştirilmeli,

Örn (yukarıdaki senaryoya göre):

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

Bu, yukarıdaki sorunu çözmenize yardımcı olacaktır.


0

Orada aynı sorunu olan birçok windows kullanıcıları için, ben de bilgisayarı yeniden başlatmanızı öneririz, çünkü çoğu zaman (en azından benim için) sadece Docker yeniden başlatmak işe yaramaz. Bu nedenle, aşağıdaki adımları izlemenizi öneririm:

  1. Bilgisayarınızı yeniden başlatın.
  2. Ardından PowerShell'inizi yönetici olarak başlatın ve şunu çalıştırın:

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

  3. Bundan sonra Docker'ınızı yeniden başlatın.

Bu adımları tamamladıktan sonra sorunsuz çalışabileceksiniz. Umarım bu yardımcı olur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.