Docker Network


Docker Network

これは簡単なドッキングステーションネットワーク構造の概略図です.
1. Docker0 interface
(1)特徴
  • IPは自動的に172.17.42.1に設定され、16ビットネットワークマスク(255.255.0.0)に設定されます.
  • このIPはDHCPによって割り当てられるのではなく、Docker内部論理によって自動的に割り当てられる.
  • ドッキングステーション0は、汎用インタフェースではなく、仮想イーサネットブリッジです.
  • docker 0はcontainerと通信するための仮想Linux bridgeである.デフォルトでは、このbridgeはL 2通信に基づいています.ドッキングステーションをインストールするとdocker 0というbridgeが作成され、コンテナの外部通信時にこのdocker 0インタフェースを通過する必要があります.
    2. Iptables
    Linuxがデフォルトで提供するiptablesは、Dockerが外部ネットワークと通信する上で重要な役割を果たします.Docker Pakageをインストールすると、自動的にiptablesに登録されます.
    Linuxファイアウォールとして機能し、パケットフィルタリングとNATとして機能します.
    3. Container network
    dockerがインストールされ、containerが作成され、コンテナはLinux Namespaceテクノロジーを使用してそれぞれの独立したネットワーク空間を割り当てます.
    コンテナを作成すると、ピアインタフェースが作成され、そのうちの1つはethoの名前でコンテナの内部ネームスペースに割り当てられ、もう1つはvetthXXX(仮想イーサネットポート)の名前でdocker 0 bridgeにバインドされます.
    (1)コンテンツポート外部露出
    containerを作成すると、デフォルトでは外部と通信できません.したがって、外部と通信するには、外部に露出するポートを指定する必要があります.
    docker run -d -p 8080:80 --name [컨테이너]
    このコマンドを実行すると、8080ポートを傍受するプロセスをdocker-proxyと呼びます.
    (2) docker-proxy
    docker-proxyがiptablesのNATを使用できない場合、docker-proxyはこのロールに代わります.
    (3)iptablesを用いたDNAT
    3.ネットワーク命令
    (1)ネットワーククエリ
    現在作成されているDockerネットワークのリストを表示できます.
    docker network ls
    bridgehostnoneは、Dockerデーモンの実行時にデバッガとして作成されるネットワークです.
    (2)ネットワークの作成
    docker network create

    (3)ネットワーク詳細
    docker network inspect
    (4)ネットワークコンテナへの接続
    docker network connect [네트워크] [컨테이너]
    (5)ネットワークからのコンテナ接続の切断
    docker network disconnenct [네트워크] [컨테이너]
    (6)2番目の容器を接続する
    docker run --name [컨테이너] --network [다른 네트워크]
    (7)ネットワークの削除
    docker network rm [네트워크]
    (8)ネットワークのクリア
    docker network prune
    2.ネットワークタイプ
    (1) BRIDGE
    dockerのデフォルトのネットワーク方式.
    docker daemonを実行するとdocker 0というブリッジが作成され、コンテナを作成するとネットワーク名空間領域が作成され、コンテナのインタフェースがdocker 0 bridgeにバインドされます.docker network inspect bridge.
    (2) HOST
    ホスト方式でコンテナを作成すると、コンテナはホストとともにネットワークを使用し、独立したネットワーク領域を持たない.
    コンテナを作成する場合は、--net=hostオプションを使用します.hostオプションを使用して作成されたコンテナではbridgeは使用されないためdocker 0にバインドされません.
    このようにして作成されたコンテナは、既存のコンテナのネットワーク環境を共有します.
    (3) NONE--net=noneオプションを使用してコンテナを作成すると、コンテナにはネットワーク領域が分離されますが、インタフェースはありません.
    ソース
    https://www.daleseo.com/docker-networks/
    https://jonnung.dev/docker/2020/02/16/docker_network/
    https://bluese05.tistory.com/15
    https://youngmind.tistory.com/entry/%EB%8F%84%EC%BB%A4-%EA%B0%95%EC%A2%8C-3-%EB%8F%84%EC%BB%A4-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-1