ドッキングウィンドウのインストール後は、デフォルトでは3つのネットワークがあります。
docker network ls
NETWORK ID NAME DRIVER SCOPE
f3be8b1ef7ce bridge bridge local
fbff927877c1 host host local
023bb5940080 none null local
私はこの単純なを維持しようとしているが。したがって、デフォルトでコンテナを開始すると、ブリッジ(docker0)ネットワーク内にコンテナが作成されます。ジェンキンスのdockerfileで
$ docker run -d jenkins
1498e581cdba jenkins "/bin/tini -- /usr..." 3 minutes ago Up 3 minutes 8080/tcp, 50000/tcp friendly_bell
ポート8080
と50000
が露出されています。これらのポートは、ブリッジネットワーク上のコンテナ用に開かれています。そのブリッジネットワーク内のすべてがポート8080
と50000
のコンテナにアクセスできます。ブリッジネットワーク内のすべてがプライベート範囲"Subnet": "172.17.0.0/16",
にあります。外部からアクセスする場合は、ポートを-p 8080:8080
にマップする必要があります。これにより、コンテナのポートが実際のサーバ(ホストネットワーク)のポートにマッピングされます。したがって、8080
のサーバーにアクセスすると、ポート8080
のブリッジネットワークにルーティングされます。
これで、ホストネットワークも構築されました。コンテナネットワークをコンテナ化しないものしたがって、ホストネットワーク内のコンテナを起動すると、次のようになります(最初のものです)。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1efd834949b2 jenkins "/bin/tini -- /usr..." 6 minutes ago Up 6 minutes eloquent_panini
1498e581cdba jenkins "/bin/tini -- /usr..." 10 minutes ago Up 10 minutes 8080/tcp, 50000/tcp friendly_bell
ポートとの違いはポートにあります。あなたのコンテナは現在、ホストネットワーク内にあります。ホスト上でポート8080
を開くと、すぐにコンテナにアクセスします。
$ sudo iptables -I INPUT 5 -p tcp -m tcp --dport 8080 -j ACCEPT
私は私のファイアウォールでポート8080
を開いたとき、私は今、私は私のジェンキンスにアクセスしてい8080
ポート上で自分のサーバーをaccesingていました。私はthis blogがそれをより良く理解するのにも役立つと思います。
Dockerfileの中にオプション '--net = host'を追加することはできますか? – AnirbanDebnath
@AnirbanDebnathドッカーファイルに入れることはできませんが、ドッカーv17以降、ドッカービルドのパラメータとして使用できます: 'docker build --network = host'。ドッカービルドの指定されたホストネットワークは、イメージを構築するために必要なパッケージをダウンロードするためのものです。ホストネットワーク上でコンテナを実行する場合は、--network = hostオプションを定義する必要があります。 – lvthillo