私はDockerイメージをプルしました:
$ docker pull ghost
そして、イメージからコンテナを実行します。
$ docker run --name test-ghost -p 8080:2368 -d ghost
7d984e974f6a75fe18b3d397b5c8f0a428928a2be9df83f0d61a679aa5f537fc
私の理解は、-p
スイッチは、ホスト(8080)上のポートをDocker(2368)内のポートにマップするため、Dockerの外部から、つまりホストから、Docker内で実行されているWebサーバーにアクセスできます。
しかし、私のホストからChromeで次のアドレスのいずれかを参照しようとすると、
http://localhost:8080/
http://0.0.0.0:8080/
http://127.0.0.1:8080/
次のエラーが発生します。
This webpage is not available
ERR_CONNECTION_REFUSED
これは、コンテナー内の問題ではなく、接続の問題である可能性があります。コンテナー内で実行中のプロセスを検査すると、NodeJSが実行されているようです。
$ docker top test-ghost
UID PID PPID ... CMD
docker 4290 1028 ... npm
docker 4324 4290 ... sh -c node index
docker 4325 4324 ... node index
しかし、何もポート8080でリッスンしていないようです:
$ Sudo lsof -n -i4TCP:8080 | grep LISTEN
$
私もチェックし、MacOSファイアウォールがオフになっています。
私が提供した情報が最小限であることを認識しているため、ここでは完全な解決策を期待していません。
私が不思議に思っているのは、そのような問題をどのように修正するのですか?
Dockerポートにアクセスできないようです。
ポートマッピングが機能しない理由を見つける方法はありますか?または、どのポートある Dockerによって公開されていますか?おそらく、間違った内部ポートをマッピングしていますか?
または、私がここで間違っている可能性があることに関して他の一般的な提案はありますか?
最後に、これを機能させる方法を見つけました!
MacOSでDockerを実行していて、「Docker QuickStart Terminal」を使用しています。
結局、「localhost」、「127.0.0.1」などに移動するのは間違っていました。Dockerが独自のホストを設定しているように見えるためです。
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com
上記の192.168.99.100
を使用すると、すべてが正常に動作します。
実行中のコンテナのIPアドレスを確認するには、次を使用できます。
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' myContainerID
docker-machine
でdockerを実行する場合は、次のコマンドを使用してIPアドレスを取得します(default
が自分の名前であると想定)。
docker-machine ip default
Dockerで遊んだところ、これが最初に遭遇した問題/問題です。
Docker like likeでは、ホスト、ブリッジ(デフォルト)などのさまざまなモードでポートを使用しているかどうかを指定できます
ブリッジモードでは、ゴーストをデプロイするとDockerからメッセージが表示されます-ブログは http:// localhost:2368 / で利用できるようになりましたが、このURLにアクセスすると接続が拒否されました。
これを修正するには、Kitematicでインスタンス設定にアクセスする必要があります(コンソールを使用する方が簡単です)。ホスト名/ポートタブに移動します。画像に示すように、Dockerポートからホストポートとビンゴへのマッピングを作成します。もう一度URLにアクセスすると、すべてが期待どおりに機能します。