BUNSEN

個人的な学習ログ

docker run -p において発生するポートフォワード失敗エラー

概要

ネットワーク機器のコンフィグ解析ツールbatfish/allinoneのコンテナを起動しようとしたとき以下のエラーが発生した。

> docker run -p 8888:8888 batfish/allinone
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: driver failed programming external connectivity on endpoint gracious_poincare (***): Error starting userland proxy: mkdir /port/tcp:0.0.0.0:8888:tcp:172.17.0.2:8888: input/output error.
ERRO[0000] error waiting for container: context canceled
  • 公式の手順通りやってるのに...
  • 昨日まではうまくいっていたのに...

ということで少し調査

原因

どうも2通りの原因があるようです

  1. ホスト側のポートが他のサービスにより占有されている
    • psなどのコマンドで使用したいポートが占有されているか調べる
  2. Dockerの設定に過去のコンテナ情報が残ってしまっている
    • 原因1 でない場合

解決策

原因のパターンにより異なります。

1. ホスト側のポートが他のサービスにより占有されている

  • 占有しているサービスを停止する
  • ホスト側のフォワーディングポートを変更する

2. Dockerの設定に過去のコンテナ情報が残ってしまっている

  • Dockerの再起動

まとめ

なんかあんまりしっくりこないね...