🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

GoogleComputeEngine

GoogleComputeEngineとは、Linux VMをGoogleのデータセンター上で走らせるIaaS (インフラストラクチャ アズ ア サービス)製品で、ビジネス向けクラウドコンピューティング基盤のことです。

Q&A

解決済

1回答

7266閲覧

Dockerコンテナにアクセスすると「curl: (52) Empty reply from server」がでる

harurun

総合スコア5

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

GoogleComputeEngine

GoogleComputeEngineとは、Linux VMをGoogleのデータセンター上で走らせるIaaS (インフラストラクチャ アズ ア サービス)製品で、ビジネス向けクラウドコンピューティング基盤のことです。

0グッド

0クリップ

投稿2019/12/13 04:07

編集2019/12/13 06:35

前提・実現したいこと

GCP最小構成にてGrowiというWebベースWikiをDockerコンテナに構築したいです。
自身のMacで試してみると接続できたのですが、GCPのVMだとどうしてもうまく行きません;x;
解決にあたって提示する情報が不足していましたらすいません。
バックエンド初心者なため色々ご指摘ください。

発生している問題
  • 外部IPを使用してのアクセスができない
  • ホストからのアクセスもできない
  • コンテナ内からもアクセスできない

環境

Ubuntu version 19.04
docker-compose version 1.25.0
Docker version 19.03.3

Dockerfile

docker-compose.yml
こちらをポートだけ下記にように変更しDocker-composeでバックグラウンド起動させています。

ports: - 3000:3000

確認したこと

ここでは0.0.0.0:3000->3000/tcpになっているのでおそらくリクエスト(any)ポート3000に対してコンテナの3000ポートに転送したいため起動設定はあっているようにも思えます。

private-growi:~/growi$ docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c7e43cdf8d5b growi_app "/sbin/tini -e 143 -…" About an hour ago Up 52 seconds 0.0.0.0:3000->3000/tcp growi_app_1

ですが、ホストから自身のポート3000にリダイレクトすることができません。。。

private-growi:~/growi$ curl localhost:3000 curl: (52) Empty reply from server

DNATの設定も問題ないように思います。

private-growi:~/growi$ sudo iptables --list -v -t nat Chain DOCKER (2 references) pkts bytes target prot opt in out source destination 0 0 RETURN all -- docker0 any anywhere anywhere 0 0 RETURN all -- br-3991e5738a1c any anywhere anywhere 0 0 DNAT tcp -- !br-3991e5738a1c any anywhere anywhere tcp dpt:3000 to:172.18.0.3:3000

別環境(自身のMac)では:::3000がlistenしていてこいつにポートフォワードされるから接続できているっぽいです。
なぜGCP環境だとこれが生成されないのでしょうか?
また何かしらを追記することでコンテナ起動時にアプリケーションを:::3000でlistenさせることは可能でしょうか?

MacContainer

1$ docker exec -it growidockercomposemaster_app_1 sh 2/opt/growi # netstat -nltu 3Active Internet connections (only servers) 4Proto Recv-Q Send-Q Local Address Foreign Address State 5tcp 0 0 127.0.0.11:45621 0.0.0.0:* LISTEN 6tcp 0 0 :::3000 :::* LISTEN 7udp 0 0 127.0.0.11:57022 0.0.0.0:*

GcpContainer

1private-growi:~/growi$ docker exec -it growi_app_1 sh 2/opt/growi # netstat -nltu 3Proto Recv-Q Send-Q Local Address Foreign Address State 4tcp 0 0 127.0.0.11:35331 0.0.0.0:* LISTEN 5udp 0 0 127.0.0.11:53549 0.0.0.0:*

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2019/12/13 05:34

GCPとか書いてありますが、↑で書かれている事はどこで実行されていますか?
harurun

2019/12/13 05:55

yoorwmさんありがとうございます。 GCPというのは抽象的すぎました、すいません。 GCP(ComputeEngine)のVMインスタンス(Ubuntu 19.04)にsshで接続を行い実行しております。
yoorwm

2019/12/13 06:43

GCPのコンソールより、VMインスタンスの詳細を見て、ネットワークインターフェースを確認してみてください。 (まだ細かい所が分かりませんが、dockerの前にまずは、GCPのネットワーク上にあるVMへアクセスできるか?を確認する所ですね。)
harurun

2019/12/13 07:29 編集

VMインスタンスには接続可能です。 tcp:22,tcp:3000ポートを許可しているため一応外部から3000ポートへのアクセスも可能なはずです。 今現在困っていることとしてGCPのVMインスタンス(ssh接続中)からcurlでコンテナを呼んでもリダイレクトがない状態です;; 少し質問を編集させていただいたのですが、私の所有しているMacのVMインスタンスとGCPのVMインスタンスで生成されるコンテナのdiffに違いがあり、これが原因でポートフォワードできないためcurlでリダイレクトできないように感じました。 この辺りお詳しければご教授お願いしたいです。
bsdfan

2019/12/16 05:35

curl 127.0.0.1:3000 では動きますか? localhostがipv6の[::1]で解決されていて接続できないのではないでしょうか。
harurun

2019/12/16 07:22 編集

curl 127.0.0.1:3000では動きませんでした、以前としてcurl: (52) Empty reply from serverを返します。 ``` @private-growi:~/growi$ ping localhost 64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=64 time=0.036 ms ``` ipv4が使用されていることも確認できました。 一旦VMを再構築することで解決するか試してみたいと思います。
bsdfan

2019/12/16 08:49

気になったこと docker ps で、mongoもelasticsearchも出ていませんが、ここに載せていないだけで、ちゃんと起動していますか? GCPの最小構成とのことですが、mongodbもelasticsearchも、どちらもそれなりにリソースを必要とするので、メモリ不足等のエラーで落ちているのかもしれないです。その結果、appがちゃんと動いていない可能性もあります。 docker-compose logsでエラーが表示されていないでしょうか。
harurun

2019/12/18 06:59

ありがとうございます。 おそらくメモリ不足だと思います。 増設後別VMですが正常にGCPにて起動しました。
guest

回答1

0

自己解決

GCP構築時のメモリ不足でコンテナが立ち上がらなかったと思われる?

投稿2019/12/18 07:05

harurun

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問