เมื่อเร็ว ๆ นี้เครื่อง PC (Windows10 Version 1607) มีปัญหาประเด็นกับตัว Docker ที่เมื่อผมทำการ restart Windows ใหม่เมื่อไหร่ Docker จะไม่สามารถ start ได้ละขึ้น Error ดังนี้
1 2 3 4 5 6 7 8 |
Docker command did not complete within the allowed timeout. Output: at Docker.Backend.MobyCommand.RunDocker(String arguments, IDictionary`2 envVariables, String stdin, Int32 timeoutMs, String cidFile) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\MobyCommand.cs:line 152 at Docker.Backend.MobyCommand.Run(String commandLine, IDictionary`2 envVariables, Boolean load, String stdin, Int32 timeoutMs) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\MobyCommand.cs:line 49 at Docker.Backend.SambaShare.MountInMoby(String mount, String drive, Credential cred, CredentialInfo credInfo, String options, String ip) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\SambaShare.cs:line 197 at Docker.Backend.SambaShare.MountInMoby(String drive, Credential credential, Settings settings) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\SambaShare.cs:line 168 at Docker.Backend.SambaShare.Mount(String drive, Credential credential, Settings settings) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\SambaShare.cs:line 65 at Docker.Backend.BackendServer.<Run>b__5_11(Object[] args) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Backend\BackendServer.cs:line 54 at Docker.Core.Pipe.NamedPipeServer.RunAction(String action, Object[] parameters) in C:\gopath\src\github.com\docker\pinata\win\src\Docker.Core\pipe\NamedPipeServer.cs:line 145 |
หลังจากหาข้อมูลมาได้สักพักผมเลยได้ข้อมูลว่าเป็นปัญหาที่เกิดจาก Firewall ของ Windows กั้นไม่ให้ Docker ทำงานได้
วิธีการแก้ไข
ให้ทำการเปิดค้นหา Program ที่ชื่อว่า “Windows Firewall with Advanced Security” หลังจากนั้นให้เลือก “Inbound Rules” แล้วเลื่อนหาชื่อที่มี Docker อยู่ด้านหน้าจะเห็นว่ามีแค่
- DockerProxy
- DockerSmbMount
ที่นี้เราจะทำให้ Windows Firewall รู้จักกับ Docker For Windows.exe โดยทำขั้นต่อดังนี้
คลิกขวาที่ “Inbound Rules” ไปที่ “New Rule…”
ให้เลือก Rule Type เป็น Program แล้วกด Next
หลังจากนั้นให้เลือก “The program path” แล้วให้ทำการ brows ไปที่ C:\Program Files\Docker\Docker\Docker for Windows.exe หลังจากนั้นกด Next
เมื่อมาถึงหน้า action ให้เลือก “Allow the connections” แล้วกด Next
ในส่วนของ Profile ให้ทำการเลือกทั้งหมด “Domain”, “Private” และ “Public” หลังจากนั้น Next
ขั้นตอนสุดท้ายคือการตั้งชื่อและใส่รายละเอียดของ Rule ใหม่นี้ ของผมเองนั้นใส่แค่ชื่อเอาไว้ว่า Docker ครับ หลังจากนั้นก็กด Finish
เป็นอันเสร็จสิ้นครับ หลังจากนี้ก็ให้ลองไปกด restart Docker ดูครับ จะพบว่าจะไม่เจอปัญหานั้นอีกต่อปายยยยยยยยยยยยย
แล้วพบกันใหม่ใน EP ถัดไปนะครับ