นักเทียบท่าบน Windows 10“ ไดรเวอร์ล้มเหลวในการเขียนโปรแกรมการเชื่อมต่อภายนอกบนอุปกรณ์ปลายทาง”


136

ฉันพยายามใช้$ docker-compose up -dสำหรับโปรเจ็กต์และได้รับข้อความแสดงข้อผิดพลาดนี้:

ข้อผิดพลาด: สำหรับ api ไม่สามารถเริ่มต้นบริการ api: โปรแกรมควบคุมล้มเหลวในการเขียนโปรแกรมการเชื่อมต่อภายนอกบน endpoint dataexploration_api_1 (8781c95937a0a4b0b8da233376f71d2fc135f46aad011401c019eb3d14a0b117): ข้อผิดพลาดในการเริ่มต้นพร็อกซี userland: mkdir /port.0c.1000 พบข้อผิดพลาดขณะเปิดโครงการ

ฉันสงสัยว่ามันอาจจะเป็นพอร์ตหรือไม่? ฉันเคยลองพอร์ต 8080 มาก่อน เดิมทีโปรเจ็กต์นี้ถูกตั้งค่าบน Mac และฉันได้โคลนที่เก็บจาก gitHub


โปรดเพิ่มลิงค์ไปยังตั๋ว github เพื่อให้เราทุกคนสามารถไปที่นั่นและโหวตได้
PussInBoots

คำตอบ:


271

ฉันได้รับข้อความแสดงข้อผิดพลาดเดียวกันใน Windows 10 Pro / Docker v17.06.1-ce-win24 / Docker-Compose v1.14.0 โดยใช้ Windows Powershell x86 ในโหมดผู้ดูแลระบบ

วิธีแก้ปัญหาคือเพียงแค่รีสตาร์ท Docker


ฉันใช้ Docker เวอร์ชัน 18.03.0-ce-win59 (16762) บน Windows 10 Professional Docker Image คือ jenkins / jenkins: 2.107.2 docker run -p 8080:8080 --name myJenkins -p 50000:50000 jenkins/jenkins:2.107.2หลังจากที่ดึงผมใช้คำสั่งนี้ในการติดตั้ง หลังจากตั้งค่าเจนกินส์เสร็จแล้วฉันใช้docker stop myJenkinsในหน้าต่างคำสั่งอื่นและปิดโฮสต์ Windows 10 ของฉันเมื่อฉันเริ่ม windows 10 ซึ่งเริ่มนักเทียบท่าโดยอัตโนมัติฉันใช้คำสั่งdocker start myJenkinsและรับข้อความที่คุ้นเคย อย่างไรก็ตามการรีสตาร์ทนักเทียบท่าจะแก้ปัญหาได้ :)
Charles Wu

1
ไม่มีใครรู้ว่าทำไมถึงเกิดขึ้น? การรีสตาร์ท Docker ดูเหมือนแฮ็คมีวิธีแก้ปัญหานี้อย่างถูกต้องหรือไม่?
Storm Muller

การแก้ไขแบบเดียวกันใช้ได้ผลสำหรับฉันในเดือนมีนาคม 2019 การใช้ Docker Desktop เวอร์ชัน 2.0.0.3 (31259) ช่องทาง: เสถียรสร้าง: 8858db3 ไคลเอนต์: Docker Engine - เวอร์ชันชุมชน: 18.09.2 เวอร์ชัน API: 1.39 เวอร์ชัน Go: go1.10.8 Git กระทำ: 6247962 สร้าง: อาทิตย์ 10 กุมภาพันธ์ 04:12:31 2019 OS / Arch: windows / amd64 Experimental: false Win 10 เวอร์ชัน 10.0.18346.1 (เวอร์ชันก่อนวางจำหน่ายอย่างรวดเร็ว)
JohnC

มีปัญหาเดียวกันใน Mac และการรีสตาร์ท Docker ก็แก้ไขได้เช่นกัน ... พระเยซูฉันควรตรวจสอบคำตอบของคุณก่อนที่จะติดตั้งสภาพแวดล้อมนักเทียบ
ท่าใหม่

67

หากเกิดขึ้นครั้งเดียวการรีสตาร์ท Docker จะทำงานได้ ในกรณีของฉันมันเกิดขึ้นทุกครั้งที่ฉันรีสตาร์ทคอมพิวเตอร์

ในกรณีนี้ให้ปิดการใช้งาน Fast Startupหรือคุณอาจรีสตาร์ท Docker ทุกครั้งที่คอมพิวเตอร์ของคุณเริ่มทำงาน วิธีนี้ได้มาจากที่นี่


6
สิ่งนี้ควรยอมรับเป็นคำตอบ รีสตาร์ทได้ผล แต่เมื่อคุณต้องทำทุกครั้งมันจะน่ารำคาญ
Vitalii

ฉันได้รับข้อผิดพลาดนี้เมื่อเปลี่ยนผู้ใช้ใน Windows 10
Vasko

59

เพียงแค่ซ่อมแซม Docker ไม่ได้ช่วยแก้ปัญหาให้ฉันใน Windows 10

ในกรณีของฉันฉันแก้ไขปัญหาด้วยขั้นตอนที่แน่นอนด้านล่าง:

1) ปิด "Docker Desktop"

2) เรียกใช้คำสั่งด้านล่าง:

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

3) เปิด "Docker Desktop" อีกครั้ง

หวังว่านี่จะช่วยคนอื่นได้


3
สิ่งนี้ใช้ได้กับฉันหลังจากลองรีสตาร์ทนักเทียบท่า! นอกจากนี้อย่าลืมเรียกใช้คู่นี้ด้วยสิทธิ์ของผู้ดูแลระบบ
Gad Wissberg

มันใช้งานได้ แต่ฉันไม่มีสิทธิ์ผู้ดูแลระบบตลอดเวลา :(
Hassan Tareq

3
ทำงานให้ฉันเริ่มบริการนักเทียบท่าใหม่โดยปกติแล้วการรีสตาร์ทเดสก์ท็อปของนักเทียบท่าก็เพียงพอแล้ว แต่ไม่ใช่ครั้งนี้ ... นักเทียบท่าบน windows 10 นั้นเจ็บปวดจริงๆ (เวลาแฝง, ข้อบกพร่อง, doc, ... )
a11r

ได้ผล! ควรเป็นคำตอบที่ยอมรับได้จริง ขอบคุณ
Dominik K

ทำงานให้ฉันขอบคุณ!
G.Mast

9

ฉันได้รับข้อผิดพลาดนั้นเช่นกันหากคุณต้องการทราบสาเหตุหลักที่ทำให้เกิดข้อผิดพลาดเนื่องจากนักเทียบท่าใช้งานคอนเทนเนอร์ที่คล้ายกันอยู่แล้วเพื่อแก้ไขปัญหา (หลีกเลี่ยงการรีสตาร์ท Docker) คุณต้อง:

docker container ls

คุณมีสิ่งที่คล้ายกับ:

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

นี่คือรายการของคอนเทนเนอร์ที่กำลังทำงานอยู่ใช้ CONTAINER ID (copy Ctrl+ C)

ตอนนี้คุณต้องจบกระบวนการ (และปล่อยให้เรียกใช้รูปภาพอื่น) เรียกใช้คำสั่งนี้

docker container stop <CONTAINER_ID>

และนั่นคือทั้งหมด! ตอนนี้คุณสามารถสร้างคอนเทนเนอร์ได้

ดูข้อมูลเพิ่มเติมได้ที่https://docs.docker.com/get-started/part2/


7

ฉันทราบว่ามีคำตอบมากมายอยู่แล้ว แต่ไม่มีคำตอบใดที่สามารถแก้ปัญหาให้ฉันได้
แต่ฉันกำจัดข้อความแสดงข้อผิดพลาดนี้โดยการรีเซ็ตนักเทียบท่าเป็นค่าเริ่มต้นจากโรงงาน :

ป้อนคำอธิบายภาพที่นี่


คุณเคยมีรายงานข้อผิดพลาดจาก Docker ก่อนที่จะทำเช่นนั้นหรือไม่เพราะในกรณีของฉันฉันมีข้อผิดพลาดปรากฏขึ้นพร้อมคำแนะนำในการรีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน
Theodosios Asvestopoulos

ไม่นะ @TheodosiosAsvestopoulos ฉันไม่ได้ป๊อปอัปนั้น
jasie

แปลกฉันมีปัญหาเดียวกันอีกครั้งในวันนี้การรีสตาร์ท Docker ไม่ได้ช่วย ฉันไม่ต้องการรีเซ็ตเป็นค่าเริ่มต้นจากโรงงานอีกครั้งเพราะเราดึงภาพที่มีขนาดใหญ่มากดังนั้นฉันจึงเพิ่งออกจาก Docker Desktop และเปิดอีกครั้งและใช้งานได้ (ดูเหมือนจะเป็นการกระทำที่แตกต่างจากการรีสตาร์ท)
Theodosios Asvestopoulos

7

โดยปกติข้อผิดพลาดนี้จะเกิดขึ้นเมื่อคุณพยายามเริ่มคอนเทนเนอร์ แต่พอร์ตที่คอนเทนเนอร์ต้องการเกิดขึ้นโดยปกติ Docker เดียวกันเช่นเป็นผลมาจากกระบวนการที่ไม่ดีล่าสุดที่จะหยุด

สำหรับฉันวิธีแก้ปัญหาคือ:

  1. เปิด Windows CMD เหมือนผู้ดูแลระบบพิมพ์netstat -oanเพื่อค้นหากระบวนการ (Docker คือกระบวนการนั้น) ที่เกิดขึ้นกับพอร์ตของคุณ:

ในกรณีของฉันพอร์ตนักเทียบท่าของฉันคือ 3306 6001 8000 9001

  1. ตอนนี้เราต้องการพอร์ตนั้นฟรีดังนั้นเราจึงไปฆ่ากระบวนการนี้โดย PID (colum PID) พิมพ์

    TASKKILL /PID 9816 /F
    
  2. รีสตาร์ท Docker

  3. มีความสุข.

ความนับถือ.


2

ในกรณีของฉันปัญหาคือ Docker container (Nginx) ใช้พอร์ต 80 และ IIS ใช้เหมือนกัน การตั้งค่าพอร์ตอื่นใน IIS ช่วยแก้ปัญหา


1

ในกรณีส่วนใหญ่กรณีแรกที่คุณควรนึกถึงคือมีบริการเก่าที่ทำงานอยู่และใช้พอร์ตนั้น ในกรณีของฉันเนื่องจากฉันเปลี่ยนชื่ออิมเมจแล้วเมื่อใช้ docker-compose เพื่อหยุด (จากนั้นขึ้น) มันจะไม่หยุดคอนเทนเนอร์เก่า (บริการ) ทำให้ไม่สามารถเริ่มคอนเทนเนอร์ใหม่ได้


0

บิตของคำตอบที่ปลาย แต่ฉันจะออกจากที่นี่มันอาจจะช่วยให้คนอื่นบน Mac ซ้อมหลังจากที่จำนวนมากของการเตะของทั้ง Mac sudo apachectl stopและนักเทียบท่าที่ผมต้อง


0
  • วิธีที่ง่ายที่สุดในการแก้ปัญหานี้คือการรีสตาร์ท Docker แต่ในบางกรณีอาจไม่ทำงานแม้ว่าคุณจะไม่มีคอนเทนเนอร์ใด ๆ ที่กำลังทำงานอยู่ในพอร์ตคุณสามารถตรวจสอบคอนเทนเนอร์ที่กำลังทำงานอยู่โดยใช้docker psคำสั่งและสามารถดูคอนเทนเนอร์ทั้งหมดที่ไม่ได้ล้าง แต่ออกก่อนใช้docker ps -aคำสั่ง

ลองนึกภาพว่ามีคอนเทนเนอร์ที่มีรหัสคอนเทนเนอร์8e35276e845eคุณสามารถใช้คำสั่งdocker rm 8e35276e845eหรือdocker rm 8e3เพื่อสิ้นสุดคอนเทนเนอร์ โปรดทราบว่า 3 สตริงแรกเป็นรหัสของ id คอนเทนเนอร์นักเทียบท่านั้น ๆ ดังนั้นตามสถานการณ์ข้างต้น8e3เป็น ID ของ 8e35276e845e

  • หากการรีสตาร์ทไม่ได้ผลคุณสามารถลองเปลี่ยนพอร์ตของบริการในไฟล์docker-compose.ymlและตามพอร์ต apache คุณต้องเปลี่ยนพอร์ตของ v-host (ถ้ามี) สิ่งนี้จะช่วยแก้ปัญหาของคุณ ปัญหา.

เช่น:

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

ควรเปลี่ยนเป็น

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

และต้องเปลี่ยน v-host ด้วย

เช่น (ตามสถานการณ์ข้างต้น):

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

วิธีนี้จะช่วยคุณแก้ปัญหาข้างต้น


0

สำหรับผู้ใช้ windows จำนวนมากที่มีปัญหาเดียวกันฉันขอแนะนำให้รีสตาร์ทคอมพิวเตอร์ด้วยเพราะส่วนใหญ่แล้ว (อย่างน้อยสำหรับฉัน) การรีสตาร์ทเพียง Docker ไม่ทำงาน ดังนั้นฉันขอแนะนำให้คุณทำตามขั้นตอนต่อไปนี้:

  1. รีสตาร์ทพีซีของคุณ
  2. จากนั้นเริ่ม PowerShell ของคุณในฐานะผู้ดูแลระบบและเรียกใช้สิ่งนี้:

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

  3. หลังจากนั้นรีสตาร์ท Docker ของคุณ

หลังจากทำตามขั้นตอนเหล่านี้เสร็จแล้วคุณจะสามารถรันได้โดยไม่มีปัญหา ฉันหวังว่าจะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.