docker composeのnetworksを設定すると「read ECONNRESET」「curl: (56) Recv failure」

今回はdocker composeのnetworksを設定してIPアドレスを固定したコンテナに対してポート番号を指定してアクセスしようとすると「read ECONNRESET」や「curl: (56) Recv failure: Connection reset by peer」と出たときに私はどう対応したのかについてお話ししていきます。



docker composeのnetworksを設定すると「read ECONNRESET」「curl: (56) Recv failure」

まず私は次のようにdocker-compose.ymlを設定しておりました。

しかし上記だとREST APIを投げると数分待った後
read ECONNRESET
というエラーが返ってきて、
curl -I localhost:8000
とコマンドを叩くと数分待った後
curl: (56) Recv failure: Connection reset by peer
というエラーが出てしまいました。

Dockerのバージョンを2.2.0.3から4.29.0に上げましたが、Dockerのバージョンを上げる前はうまくいっていました。

また、networksの記述を消してdefaultのネットワークを使うと正常にレスポンスが返ってきます。

そこで私は一旦
docker network ls
のコマンドを叩いて、defaultのネットワークについて
docker network inspect cfc44a5b79fd
と叩いてDockerネットワークの詳細を見ることにしました。

すると、下記の結果が返ってきました。

ひとまず「Subnet」と「Gateway」の値を真似てみることに。

できあがった新しいdocker-compose.ymlはこちらです。

するとなぜかうまくいき、REST APIの結果が返ってきて、curlも通るようになりました。

理由は分かりませんがこれで解決ですね。
どなたか理由をご存知の方がいたら教えてください。

終わりに

今回はdocker composeのnetworksを設定してIPアドレスを固定したコンテナに対してポート番号を指定してアクセスしようとすると「read ECONNRESET」や「curl: (56) Recv failure: Connection reset by peer」と出たときに私はどう対応したのかについてお話しいたしました。

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者1000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






Docker

Posted by ちこ