公式リポジトリからDockerコンテナでTomcatを実行しています。
docker pull Tomcat
homepage に記載されているガイドラインに従って、インスタンスを実行し、Tomcatサーバーが起動します
docker run -it --rm -p 8888:8080 Tomcat:8.0
Tomcatサーバーはポート8888で使用できます。次のコマンドを実行すると、boot2dockerで応答を取得できます。
curl localhost:8888
しかし、PCにインストールされているWebブラウザー(WindowsにインストールされているVirtual Boxにはありません)からページにアクセスしたいと思います。できますか?もしそうならどのように?
VirtualBox設定でポート転送ルールが欠落している可能性があります。
boot2docker vm > settings > Network > NAT adapter > Port forwarding
最後のエントリに注意してください。
このようにして、チェーン全体を構成しました:hostPort:virtualBoxPort
その後virtualBoxPort:containerPort
、次の図に示すように:
数か月前にDocker-Toolsが導入されて以来、より良い回答があるようです。 Docker Toolsを使用していない場合は、 https://docs.docker.com/machine をご覧ください
Docker Toolsを使用している場合、
$ docker-machine ls
でdockerマシン名を見つけます$ docker-machine ip <machine-name>
でdocker IPアドレスを見つけます$ curl 192.168.99.100
boot2docker ip
を実行して、DockerブリッジのIPを取得します。その後、curl BRIDGE_IP:8888
を実行できます。IPは192.168.59.103のようなものになります。 boot2dockerでは、VMネットワークスタックはローカルホストではなく、仮想インターフェイスで実行されます。
docker-machine ls
を使用して、コンテナを実行しているVirtual BoxインスタンスのIPを取得します。次に、公開した関連ポート(私の場合は8080)でそれを使用します。したがって、http://192.168.99.100:8080
でした。
オプション-p
には引数hostPort:containerPort
があるため、ポート8080(ドッカーイメージ内)はホスト(Windowsボックス)のポート8888にマップされます。これは、curlで行ったように、:8888
をURLに追加することで、WindowsボックスでTomcatを見つけることができることを意味します。