Docker di Windows 10 "driver gagal memprogram konektivitas eksternal pada titik akhir"

136

Saya mencoba menggunakan $ docker-compose up -duntuk sebuah proyek dan mendapatkan pesan kesalahan ini:

KESALAHAN: untuk api Tidak dapat memulai api layanan: driver gagal memprogram konektivitas eksternal pada titik akhir dataexploration_api_1 (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): Kesalahan saat memulai proxy userland: mkdir /port/tcp2.09.0: Terjadi kesalahan saat membuka proyek.

Saya bertanya-tanya apakah itu mungkin portnya? Saya telah mencoba port 8080 sebelumnya. Proyek ini awalnya disiapkan di mac dan saya telah mengkloning repositori dari gitHub.

Sockness_Rogers
sumber
Silakan tambahkan tautan ke tiket github sehingga kita semua dapat pergi ke sana dan memberi suara positif.
PussInBoots

Jawaban:

271

Saya mendapat pesan kesalahan yang sama di Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 saya menggunakan Windows Powershell x86 dalam mode admin.

Solusinya adalah dengan memulai ulang Docker.

Jens Christian Eldøy
sumber
Saya menggunakan buruh pelabuhan Versi 18.03.0-ce-win59 (16762) pada Windows 10 Professional. Gambar Docker adalah jenkins / jenkins: 2.107.2. Setelah menarik, saya menggunakan perintah ini untuk menginstal docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2. Setelah selesai mengatur jenkins, saya menggunakan docker stop myJenkinsdi jendela perintah lain dan mematikan host saya Windows 10. Ketika saya memulai windows 10 yang memulai buruh pelabuhan secara otomatis, saya menggunakan perintah docker start myJenkinsdan mendapatkan pesan yang akrab. Namun, memulai kembali buruh pelabuhan akan memecahkan masalah :)
Charles Wu
1
Apakah ada yang tahu mengapa hal ini terjadi? Memulai ulang buruh pelabuhan tampaknya hacky, apakah ada cara untuk menyelesaikannya dengan benar?
Storm Muller
Perbaikan yang sama bekerja untuk saya pada Maret 2019. Menggunakan Docker Desktop Versi 2.0.0.3 (31259) Saluran: stabil Build: 8858db3 Klien: Mesin Docker - Versi Komunitas: 18.09.2 Versi API: 1.39 Versi Go: go1.10.8 Git commit: 6247962 Dibangun: Minggu 10 Feb 04:12:31 2019 OS / Arch: windows / amd64 Eksperimental: false Win 10 Versi 10.0.18346.1 (versi cepat dari pra rilis)
JohnC
memiliki masalah yang sama di Mac dan memulai ulang buruh pelabuhan memperbaikinya juga ... tuhan saya seharusnya memeriksa jawaban Anda sebelum menginstal ulang seluruh lingkungan buruh pelabuhan secara lokal ....: D cheers mate
Sosomqk
67

Jika terjadi sekali, memulai ulang Docker akan melakukan pekerjaannya. Dalam kasus saya, itu terjadi setiap kali saya me-restart komputer saya.

Dalam kasus ini, nonaktifkan Fast Startup , atau Anda mungkin akan memulai ulang Docker setiap kali komputer Anda mulai. Solusi ini diperoleh dari sini

chomp
sumber
6
Ini harus diterima sebagai jawaban. Restart berfungsi tetapi ketika Anda perlu melakukannya setiap kali itu menjadi mengganggu
Vitalii
Saya mendapat kesalahan ini saat mengganti pengguna di Windows 10
Vasko
59

Cukup dengan merestart Docker tidak memperbaiki masalah saya di Windows 10.

Dalam kasus saya, saya menyelesaikan masalah dengan langkah-langkah yang tepat di bawah ini:

1) Tutup "Desktop Docker"

2) Jalankan perintah di bawah ini:

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

3) Luncurkan "Docker Desktop" lagi

Semoga ini bisa membantu orang lain.

Mohammed Réda OUASSINI
sumber
3
Ini berfungsi untuk saya setelah mencoba hanya restart buruh pelabuhan! Juga, jangan lupa untuk menjalankan pasangan ini dengan hak istimewa admin
Gad Wissberg
Berhasil, tetapi saya tidak memiliki hak istimewa admin sepanjang waktu :(
Hassan Tareq
3
Bekerja untuk saya me-restart layanan buruh pelabuhan, biasanya hanya restart desktop buruh pelabuhan sudah cukup tetapi tidak kali ini ... buruh pelabuhan di windows 10 benar-benar menyakitkan (latensi, bug, dokumen, ...)
a11r
Ini berhasil! Seharusnya jawaban yang diterima sebenarnya. Terima kasih
Dominik K
Bekerja untuk saya, terima kasih!
G.Mast
9

Saya mendapat kesalahan itu juga, jika Anda ingin tahu alasan utama mengapa kesalahan terjadi, itu karena buruh pelabuhan sudah menjalankan wadah yang sama, untuk menyelesaikan masalah (hindari memulai ulang Docker), Anda harus:

docker container ls

Anda mendapatkan sesuatu yang mirip dengan:

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

Ini adalah daftar container yang sedang berjalan, ambil ID CONTAINER (copy Ctrl+ C)

Sekarang Anda harus mengakhiri proses (dan menjalankan gambar lain) menjalankan perintah ini.

docker container stop <CONTAINER_ID>

Dan itu saja! Sekarang Anda dapat membuat wadah.

Untuk informasi lebih lanjut, kunjungi https://docs.docker.com/get-started/part2/

Andres Rodriguez
sumber
7

Saya sadar sudah ada banyak jawaban, tetapi tidak ada yang memecahkan masalah untuk saya.
Sebagai gantinya, saya menghilangkan pesan kesalahan ini dengan mengatur ulang buruh pelabuhan ke default pabrik :

masukkan deskripsi gambar di sini

jasie
sumber
Apakah Anda memiliki laporan kesalahan dari Docker sebelum melakukan itu, karena dalam kasus saya, saya memiliki sesuatu seperti kesalahan yang muncul dengan saran untuk mengatur ulang ke default pabrik.
Theodosios Asvestopoulos
Tidak, @TheodosiosAsvestopoulos, saya tidak mendapatkan munculan itu.
jasie
Anehnya saya mengalami masalah yang sama lagi hari ini, restart buruh pelabuhan tidak membantu. Saya tidak ingin melakukan reset ke default pabrik lagi, karena kami menarik gambar yang sangat besar, jadi saya hanya keluar dari Docker Desktop dan membukanya lagi dan berhasil (sepertinya merupakan tindakan yang berbeda dari hanya memulai ulang).
Theodosios Asvestopoulos
7

Biasanya kesalahan ini terjadi ketika Anda mencoba memulai sebuah kontainer tetapi port yang dibutuhkan kontainer sudah ditempati, biasanya oleh Docker yang sama seperti akibat dari proses buruk terbaru untuk dihentikan.

Bagi saya solusinya adalah:

  1. Buka windows CMD seperti administrator, ketik netstat -oanuntuk menemukan proses (Docker adalah proses itu) yang menempati port Anda:

Dalam kasus saya, port buruh pelabuhan saya adalah 3306 6001 8000 9001.

  1. Sekarang kita perlu membebaskan port itu, jadi kita pergi untuk menghentikan proses ini dengan PID (kolom PID), ketik

    TASKKILL /PID 9816 /F
    
  2. Mulai ulang buruh pelabuhan.

  3. Berbahagialah.

Salam.

Jhon Didier Sotto
sumber
2

Dalam kasus saya, masalahnya adalah bahwa kontainer buruh pelabuhan (Nginx) menggunakan port 80, dan IIS menggunakan hal yang sama. Menyiapkan port lain di IIS memecahkan masalah

Артур Камильянов
sumber
1

Dalam kebanyakan kasus, kasus pertama yang harus Anda pikirkan adalah ada layanan lama yang berjalan dan menggunakan port itu. Dalam kasus saya, karena saya mengubah nama gambar, maka ketika menggunakan docker-compose untuk berhenti (lalu naik), itu tidak akan menghentikan kontainer lama (layanan), menyebabkan kontainer baru tidak dapat dimulai.

Phuoc Quach ngoc
sumber
0

Sedikit jawaban terlambat tetapi saya akan meninggalkannya di sini mungkin membantu orang lain Di Mac mojave setelah banyak restart dari kedua mac dan buruh pelabuhan yang harus saya lakukan sudo apachectl stop.

Tarek
sumber
0
  • Cara termudah untuk mengatasinya adalah Memulai kembali buruh pelabuhan. Tetapi dalam beberapa kasus ini mungkin tidak berfungsi meskipun Anda tidak memiliki kontainer yang berjalan di port. Anda dapat memeriksa kontainer yang berjalan menggunakan docker psperintah dan dapat melihat semua kontainer yang tidak dihapus tetapi keluar sebelum menggunakan docker ps -aperintah.

Bayangkan ada container yang memiliki container id 8e35276e845e. Anda bisa menggunakan perintah docker rm 8e35276e845eatau docker rm 8e3mengakhiri container. Perhatikan bahwa 3 string pertama adalah id dari ID kontainer buruh pelabuhan tertentu. Jadi menurut skenario di atas, 8e3 adalah id dari 8e35276e845e .

  • Jika memulai ulang tidak berhasil, Anda dapat mencoba mengubah port layanan di file docker-compose.yml dan sesuai dengan port apache Anda harus mengubah port v-host (jika ada). Ini akan menyelesaikan masalah Anda. masalah.

Ex:

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

harus diubah menjadi

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

dan v-host tertentu juga harus diubah,

Ex (menurut skenario di atas):

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

Ini akan membantu Anda memecahkan masalah di atas.

Hirumina
sumber
0

Untuk banyak pengguna windows di luar sana yang memiliki masalah yang sama, saya sarankan untuk me-restart komputer juga, karena sebagian besar waktu (setidaknya bagi saya) memulai ulang hanya Docker tidak berfungsi. Jadi, saya sarankan Anda mengikuti langkah-langkah berikut:

  1. Mulai ulang komputer Anda.
  2. Kemudian Mulai PowerShell Anda sebagai admin dan jalankan ini:

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

  3. Setelah itu restart Docker Anda.

Setelah menyelesaikan langkah-langkah ini, Anda akan dapat menjalankannya tanpa masalah. Saya harap itu membantu.

Donald Shahini
sumber