【エラー】Docker内で立ち上げたサーバーのアクセスで「Empty reply from server」が発生した件

Dockerの立ち上げに関しては、

  1. Dockerfileというファイルを作成する
  2. ビルドしてDockerイメージを作成する
  3. Dockerイメージからコンテナを作成する
  4. コンテナに接続してログインする

という手順を行って、

上記をやってみたあとに、

  • Dockerのイメージの確認
  • Dockerのコンテナの確認
  • Dockerのコンテナの停止と削除

などを行っていました。

これらを行う中で、

Dockerの中で立ち上げたサーバーにアクセスする際に、

「Empty reply from server」

が発生したので個人的にメモ。

Dockerの基本操作

Dockerfileなどを作るなどの基本操作に関しては、

以下にまとめているので、参照してください。

今回の事象が起きた環境構成

環境としては、

  • サーバ(Dockerの外)はNginxで起動
  • Nginxではproxyでポート指定(8080)
  • Dockerの中では、ポート指定(10000)で起動

という形でサーバを動かしていました。

ちなみに、

Dockerの状況を確認すると以下の状況でした。

確認コマンド

docker ps

確認結果

$ docker ps
CONTAINER  .... PORTS                                        NAMES
111        .... 0.0.0.0:8080->10000/tcp, :::8080->10000/tcp  test

エラー内容

エラー内容としては、

サーバーの中(Dockerの外)から、

curlコマンドで実行を確認すると、

確認コマンド

curl -l http://localhost:8080/test

確認結果

$ curl -l http://localhost:8080/test
curl: (52) Empty reply from server

という感じで、

「Empty reply from server」

というエラーが発生しました。

Dockerの中で、

「10000」というポートで立ち上げたサーバーの中で、

このポートにアクセスできるか確認すると、

$ curl -l http://localhost:10000/test
test ←これは検証で試した返却値

という形で、

問題なくレスポンスが返却されていました。

対応方法

解決方法としては、

Docker内で起動しているサーバーのホスト名を、

「localhost」ではなく「0.0.0.0」

に変更するとうまく動作しました。

Dockerの外から、

$ curl -l http://localhost:8080/test
curl: (52) Empty reply from server

というエラーになっていたものが、

$ curl -l http://localhost:10000/test
curl: (52) Empty reply from server

というレスポンスになっているので、

うまく挙動していることが確認できました。

スキルを使って、就職/転職/副業する時のサイト

プログラミングのスキルなどを、自分なりに高めた上で、

自分のスキルをアピールして就職や転職を行い、年収をあげるか、

副業という形で、年収にプラスアルファの稼ぎを増やすことはできます。

まずはできる範囲で取り組むことで、

少しずつ、経験値も増え、自分のスキルが収入につながるのでおすすめです。

おすすめ書籍

広告

おすすめ記事