Docker for Windows で "driver failed programming external connectivity on endpoint" になるのを解決する

悲しみ

Docker for Windows を入れるためにわざわざ Windows10 を Home から Pro に変えたのに konozama.

docker-compose up -d
Creating network "app_name_default" with the default driver
Creating app_name_db_1 ... error

ERROR: for app_name_db_1  Cannot start service db: driver failed programming external connectivity on endpoint app_name_db_1 (xxxx): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:13360:tcp:172.21.0.2:3306: input/output error

ERROR: for db  Cannot start service db: driver failed programming external connectivity on endpoint app_name_db_1 (xxxx): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:13360:tcp:172.21.0.2:3306: input/output error
ERROR: Encountered errors while bringing up the project.

解決策

その場対応

win起動時に自動で立ち上がるdockerを再起動すれば直ります。

タスクバーで座礁しているクジラ型コンテナ船を Restart して大海原へ戻してあげればいいです。

f:id:ichi_404:20190112111252p:plain
restart docker

恒久的対応

Windowsご自慢の素敵機能「高速スタートアップ」を無効にすることで解消できます。

参考記事:https://github.com/docker/for-win/issues/1038#issuecomment-373231436

起動が遅くなる可能性がありますが、M.2のSSDを使っているので体感では分からず。

手順

Windows10(バージョン)の場合 コントロールパネル > 電源とスリープ > 電源の追加設定 > 電源ボタンの動作を選択する でシステム設定画面へたどり着き、

現在利用可能ではない設定を変更します をクリック、 シャットダウン設定高速スタートアップを有効 にするのチェックを外して再起動。

Windowsのバージョンによって上記参考記事とは文言や画面が変わっているようなので注意。

docker-compose up -d
Creating network "app_name_default" with the default driver
Creating app_name_db_1 ... done
Creating app_name_app_1 ... done
Creating app_name_web_1 ... done

成し遂げた。