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
して大海原へ戻してあげればいいです。
恒久的対応
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
成し遂げた。