2017-12-12 1 views
0

私は-pでポートマッピングを理解しています。私は唯一のホストネットワーク上の1つのポート上で、私のコンテナポートをマッピングすることができます理解:ドッカーネットワーク:同じポートを開いた2つのコンテナを持つことができます

$ docker run -d -p 8080:80 nginx 

すでにコンテナが実行されているため、他のコンテナが8080でそのポートがマップすることはできません。このポート8080はdocker0ポート80にマッピングされたというようにドッキングウィンドウ・コンテナ・ポートの80

しかし、私は別のnginxを持つことができますなぜ私は本当に理解していないされます。

$ docker -run -d -p 8888:80 

私はマップする必要があり私のポートはホストの別のポート(8888)にありますが、なぜ私のドッカー0ネットワークはポート80を2回開くことができますか?ポート80の後ろに2つのコンテナがあります。動作することは分かっていますが、理由は分かりません。

答えて

1

各コンテナは別々のネットワーク名前空間で動作します。これは、ネットワークリソース(アドレス、インタフェース、ルートなど)をホストと共有しない独立したネットワーク環境です。コンテナ内でサービスを開始すると、別のマシンでサービスを開始したかのようになります。彼らは異なるネットワークの名前空間にあるので、あなたがポート80

上で実行されているWebサーバを使用してホスト上の2つの異なるコンテナを持つことができます

あなたがポート80上で実行されているWebサーバを使用してネットワーク上の2台の異なるマシンを持つことができるのと同様に、紛争はありません。ネットワーク名前空間の詳細については読書

関連する問題