Dockerのインストール後、デフォルトで3つのネットワークがあります。
docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
f3be8b1ef7ce        bridge              bridge              local
fbff927877c1        host                host                local
023bb5940080        none                null                local
私はこれをシンプルにしようとしています。したがって、デフォルトでコンテナを起動すると、ブリッジ(docker0)ネットワーク内に作成されます。
$ docker run -d jenkins
1498e581cdba        jenkins             "/bin/tini -- /usr..."   3 minutes ago       Up 3 minutes        8080/tcp, 50000/tcp   friendly_bell
jenkinsのdockerfileで、ポート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アクセスしているときに、ジェンキンスにアクセスしています。このブログも理解を深めるのに役立つと思います。
     
              
--net=hostDockerfile内にオプションを追加することは可能ですか?