コンテナのIP

Dockerにおいて表題の件。`-d`で稼働させているコンテナのIPがいくつで動いているのか?を知りたかったのでその方法をメモ。

■ 環境

  • Docker 1.11.1
  • Docker for Mac Beta
  • Mac OSX El Capitan

■ コンテナ間接続

そもそも起動するコンテナに対して`–link`オプションを使用すれば接続も可能である。

Dockerのコンテナ間接続

しかし今回は`network`コマンドからIPを確認する。

■ network inspect

まずはDocker上のネットワークを確認。

$ docker network ls
NETWORK ID          NAME                DRIVER
XXXXXXXXXXXX        bridge              bridge
XXXXXXXXXXXX        host                host
XXXXXXXXXXXX        none                null
XXXXXXXXXXXX        projectA            bridge
$

自身の環境では現在4つのネットワークが存在する。上の3つはデフォルトで作成されるものであり、最後の”projectA“ネットワークは後から自身で作成したものである。

調べたいコンテナはデフォルトの”bridge“ネットワークに存在しているので、このネットワークの詳細を確認する。

$ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "XXXXXXXXXXXXXXXXXXXX",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "XXXXXXXXXXXXXXXXXXXX": {
                "Name": "mongo",
                "EndpointID": "XXXXXXXXXXXXXXXXXXXX",
                "MacAddress": "XX:XX:XX:XX:XX:XX",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "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"
        },
        "Labels": {}
    }
]
$

コンテナは現在いくつか稼働しているのだが、”bridge“ネットワークに接続されているのは”mongo“コンテナのみであったようだ。あとはこの記載からIPを割り出せば良い。同じネットワーク上に稼働させるコンテナであれば、このIPで接続が可能なはずである。また”Name“で指定しているコンテナ名でも名前解決がされ接続が可能であるはずだ。

以上。

■ 関連