web-dev-qa-db-ja.com

Dockerコンテナーでポートを公開する方法

カスタムポート(8080)のDockerコンテナーでWebサービスを実行しました。ここでは、コンテナを実行して、関連するコンテナのポートを公開しようとしています( ここに表示 )が、役に立ちません。

docker run -p 127.0.0.1:8080:8080 beatthemarket run wait

しかし、そのWebサービスエンドポイントに到達できないようです。

i)コンテナのポートを正しく公開していますか? ii)使用できないポートである場合、またはWebサービスが使用できない場合のトラブルシューティング方法呼び出される(コンテナにシェルインしてエンドポイントをカールできると便利です)。

私のDockerfileを見ることができます ここ 。そして、私はAdzerkの boot-clj ベースイメージを使用しています。

実際にdockerを実行し、毎回jarファイルの束を取得します。次に、 boot ブロック(waitタスク)を実行します(これは、WebサーバーがWeb要求を処理するために必要です)。そして、これは私が迷子になっているところです。 Dockerでブートすると、私が要求したとおりにブロックします。しかし、ルートURI 返されるはずです という基本的なHello Worldメッセージを取得できないようです。

$ docker run -p 127.0.0.1:8080:8080 beatthemarket run wait
Downloading https://github.com/boot-clj/boot/releases/download/2.5.5/boot.jar...
Retrieving dynapath-0.2.3.jar from https://clojars.org/repo/
Retrieving pod-2.5.5.jar from https://clojars.org/repo/
Retrieving shimdandy-impl-1.2.0.jar from https://repo1.maven.org/maven2/
Retrieving core-2.5.5.jar from https://clojars.org/repo/
...
Implicit target dir is deprecated, please use the target task instead.
Set BOOT_EMIT_TARGET=no to disable implicit target dir.

Chrome、curl、wgetはすべて、接続が拒否されたと言っています。

$ curl http://127.0.0.1:8080/
curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused

$ wget http://127.0.0.1:8080/
--2016-04-21 20:07:32--  http://127.0.0.1:8080/
Connecting to 127.0.0.1:8080... failed: Connection refused. 
2
Frye

EXPOSEステートメントをポート8080のDockerfileに追加する必要があります。

Dockerからの参照は次のとおりです。 https://docs.docker.com/engine/reference/builder/#expose

最終的なDockerfileは次のようになります。

FROM adzerk/boot-clj

EXPOSE 8080

WORKDIR /app
COPY . /app
4
Joe Doyle

-pスイッチは、Dockerインスタンスにブリッジするホストに穴を開けます。-pHost_port:docker_instance_port

ここで、Dockerホストがどこにあるかを確認する必要があります。 VirtualBoxを使用している場合は、以下を実行してみてください。

docker-machine env

http://javagoogleappspot.blogspot.com/2018/07/docker-basics.html

0
the dude