Dockerにおいて表題の件。`-d`で稼働させているコンテナのIPがいくつで動いているのか?を知りたかったのでその方法をメモ。
■ 環境
- Docker 1.11.1
- Docker for Mac Beta
- Mac OSX El Capitan
■ コンテナ間接続
そもそも起動するコンテナに対して`–link`オプションを使用すれば接続も可能である。
しかし今回は`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“で指定しているコンテナ名でも名前解決がされ接続が可能であるはずだ。
以上。