การแก้ไขปัญหา Docker Desktop for Windows Error response from daemon: driver failed programming external connectivity on endpoint : Error starting userland proxy: input/output error
หลังจากที่ผมทดลองหัดใช้งาน Docker Desktop บน Windows10 ก็พบปัญหาแปลกๆหลังจากที่ใช้งานไปได้สักพัก โดยปัญหาที่พบมีดังนี้
อาการ Error :
ผมพบ Error แปลกๆนี้เมื่อผมสั่ง Run Image ด้วยคำสั่ง
> docker run --name TEST-01 -p 8082:80 -d mtec_project:0.1
#อธิบาย ผม Run Image และตั้งชื่อว่า TEST-01 ใช้ Port ภายนอก 8082 และ Port ภายใน 80 จาก Image ชื่อ mtec_project tag 0.1
#อธิบาย ผม Run Image และตั้งชื่อว่า TEST-01 ใช้ Port ภายนอก 8082 และ Port ภายใน 80 จาก Image ชื่อ mtec_project tag 0.1
ขึ้น Error ดังภาพประกอบที่ 1 ว่า
Error response from daemon: driver failed programming external connectivity on endpoint TEST-01 (46347c03371bedf1c8aedfb0e181c7eb6be81c57be552ee21870eca6bf0208de): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:8082:tcp:172.17.0.2:80: input/output error.
Error response from daemon: driver failed programming external connectivity on endpoint TEST-01 (46347c03371bedf1c8aedfb0e181c7eb6be81c57be552ee21870eca6bf0208de): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:8082:tcp:172.17.0.2:80: input/output error.
![]() |
| ภาพประกอบที่ 1 : Error เมื่อผมพยายามสั่ง docker run เพื่อ Run image และขอใช้ port 8082 |
ความรู้สึกผมคือเหมือนกับว่า Image ถูกสั่ง Run ขึ้นมาแล้วแต่ดูเหมือน Container จะยังไม่ทำงาน ผมจึงสั่งสตาร์ท Container ด้วยคำสั่ง
> docker start TEST-01
#อธิบาย สั่ง Start Container ชื่อว่า TEST-01
ก็ยังพบว่าขึ้น Error เช่นเดิมดังภาพประกอบที่ 2
| ภาพประกอบที่ 2 : เมื่อสั่ง docker Start TEST-01 เพื่อ Run Container ยังคงพบ Error เช่นเดิม |
เมื่อผมใช้คำสั่ง docker ps -a เพื่อ ดูสถานะของ Container ทั้งหมด พบว่า Container : TEST-01 ถูกสร้างแล้ว (Created) แต่ไม่เปลี่ยนเป็นสถานะ Up และไม่มีการใช้งาน Port
| ภาพประกอบที่ 3 : จะเห็นว่าสถาะของ Container เป็น Created (ไม่ใช่ Up) และไม่มีการใช้งาน Port |
การแก้ไข
ผมเข้าไปพบวิธีแก้ไขใน https://github.com/docker/for-win/issues/3338
จากคำตอบของคุณ pfuntner ดังภาพประกอบที่ 4 กล่าวว่า "I was experiencing this with Docker Desktop 2.0.0.3. Restarting Desktop and removing the old containers seemed to resolve the problem."
![]() |
| ภาพประกอบที่ 4 |
หมายความว่าเราต้องทำ 2 ขั้นตอนดังนี้
- ลบ Containers เก่าออกทั้งหมดเนื่องจาก Container ทั้งหมดที่มีบนเครื่องผมเป็นเพียงการทดสอบ ผมจึงลบ Container ทั้งหมดได้ทันที แต่หากใครใช้บนเครื่อง Production ก็ต้องระวังหน่อยนะครับ
docker stop $(docker ps -a -q) # อธิบาย -> ใช้คำสั่งนี้เพื่อหยุดการทำงานของ Container ทั้งหมด(ใน Docker ถ้า Container ยังไม่หยุดการทำงานจะไม่สามารถลบได้
docker rm $(docker ps -a -q) # อธิบาย -> ใช้คำสั่งนี้เพื่อลบ Container ทั้งหมด - สั่ง ทำการ Restart เริ่มการทำงานของ Docker Desktop ใหม่
โดยคลิ้กที่ตัวปลาวาฬที่เป็นสัญลักษณ์ Docker บน Taskbar ดังภาพประกอบที่ 5
![]() |
| ภาพประกอบที่ 5 ขั้นตอนการ Restart Docker Desktop คลิ้กที่ตัวปลาวาฬที่เป็นสัญลักษณ์ Docker จากนั้นเลือก Restart |
ทดสอบการแก้ไขปัญหา
> docker run --name TEST-01 -p 8082:80 -d mtec_project:0.1 เพื่อ Run Image อีกครั้ง
จากนั้นใช้คำสั่ง
> docker ps เพื่อดูสถานะการทำงานของ Container อีกครั้ง
จะพบว่า Container ถูกเรียกขึ้นมาใช้งานโดยมีสถานะเป็น Up และมีการเรียกใช้งาน Port ตามที่เราต้องการแล้ว ดังภาพประกอบที่ 6
![]() |
| ภาพประกอบที่ 6 หลังจากที่เราแก้ปัญหาแล้วสั่ง docker run เพื่อ Run Imageและ docker ps เพื่อดูสถานะของ Container อีกครั้งจะพบว่า Status ถูกเปลี่ยนเป็น Up และ Port 8082 ถูกเรียกใช้งานแล้ว |
เนื่องจาก Container นี้ของผมเป็นตั้งค่าเป็น PHP Server โดยการ Run Apache ก็จะสามารถทดสอบบน Web Browser ได้โดยคำสั่ง localhost:8082 ดังภาพประกอบที่ 7
![]() |
| ภาพประกอบที่ 7 |
สรุป
จากการที่ผมลองฝึกหัดใช้งาน Docker บน Docker Desktop for Windows 10 ก็จะพบปัญหาแปลกๆบ่อยพอสมควร หากคราวหน้ามีปัญหาแปลกๆและแก้ไขได้ก็จะนำมาแชร์วิธีการแก้ไขให้ทราบกันอีกครั้งครับ






ความคิดเห็น
แสดงความคิดเห็น