Docker ネットワークアソシエイツへの旅#2 ポートマッピングでネットワークの勉強

2021年の抱負であります、Dockerネットワークの勉強2回目です。

ちなみにWireshark達人への道と同じくシリーズ名として、「
Dockerネットワークアソシエイツへの旅」としております。

AWSアソシエイツ等の資格からフィーチャーしておりますが、このアソシエイツという意味は準会員や同僚、仲間といった意味があるようです。

つまり、勉強してDockerユーザー仲間になるよ!的な意味を持たせたつもりです、はい。

なお、本記事は筆者の備忘録として書いていきますが、Dockerを使ったことがない人にとっては有用な情報もあるかもしれませんので、宜しかったら一読してみてください。

今回は、前回リンクを張ったDocker-docs-jaの記事を実際に手元の環境で試して想定通りの動作をするか?を確認したいと思います。

今回確認するリンクは、「Docker Desktop for Windows のネットワーク構築機能」となり、こちらのポートマッピングとホスト側、コンテナ側のIF状態をチェックしていきたいと思います。

今回の環境は、前回と同様以下の通りです。

項目環境情報
OSWindows10 Pro x64
DockerDocker Engine v20.10.0
表1 筆者環境

コマンドプロンプトを起動し、以下のコマンドを実行します。

docker run -p 8080:80 -d nginx
図1 nginxポートマッピング起動

コマンドの正常起動を確認し、http://localhost:8080にアクセスすると図2のnginxの画面が表示されます。

図2 nginxアクセス

ここからが重要なのですが、コマンドでインターフェイスの状態を確認してみましょう。

C:\Users\xxxx>docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
16792c6550fb   nginx     "/docker-entrypoint.…"   15 minutes ago   Up 15 minutes   0.0.0.0:8080->80/tcp   xenodochial_benz

※PORTSでローカル0.0.0.0:8080が80番ポートにポートマッピングされていることが確認できます


C:\Users\xxxx>docker inspect --format="{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}" 16792c6550fb
172.17.0.2

※nginxのIPアドレスが、172.17.0.2であることが確認できます



C:\Users\xxxx>docker network ls
NETWORK ID     NAME         DRIVER    SCOPE
13872d16adf9   bridge       bridge    local
17d678c52da4   host         host      local
b02b95bd2940   none         null      local
eea09009b96f   wp-network   bridge    local

※docker runでオプションなしだと、bridgeネットワークに割り当てられます。ここで、IDを確認します。


C:\Users\xxxx>docker network inspect 13872d16adf9
[
    {
        "Name": "bridge",
        "Id": "13872d16adf9c4a2ec65d4de76cd09053565e86b24bb5f649ff7053a2b49f6b8",
        "Created": "2021-01-03T06:19:25.1673691Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "16792c6550fb871506c353d030c429fc7c692959476302e75b6aed69637a25a0": {
                "Name": "xenodochial_benz",
                "EndpointID": "e2becd6f197038d5c06d262f11571278de79cfc26b1bbb456e2f79cb3b4a9a49",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
※172.17.0.2のMACアドレスを確認できます。
       "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
※ブリッジ名がdocker0であることが確認できました。
        "Labels": {}
    }
]

上記のコマンドによる確認で、Docker for Windowsの動作を確認することができます。

  • docker runオプションなし起動だと、bridgeネットワークに所属する
  • 作成されるブリッジの名称は、docker0である
  • IPマスカレードは、trueである
  • デフォルトサブネットは、172.17.0.0/16である

基本的なdockerのコマンドでも丁寧に観察していけば、Dockerネットワークの仕組みが分かってきます。

面白いですね、Docker!!一緒にどんどん勉強してきましょう。

(Visited 245 times, 1 visits today)
The following two tabs change content below.
【好きなもの】 インフラ技術が好き。古いものが好き。 【生きてきたフィールド】 システム運用、ソフトウェア開発、ミドルウェア検証、OSSサポート、プリセールスエンジニア、プロジェクトマネジメント 【このサイトでの役割】 サイト管理者。