GAGA LIFE.

インフラエンジニアブログ

スポンサーリンク

Dockerコンテナのネットワーク操作

docker network ls(ネットワークの一覧表示)

$ docker network ls [オプション]
Options Description
-f,--filter=[] 出力をフィルタ
--no-trunc 詳細を出力する
-q,--quiet ネットワークIDのみを表示する

実行例:ネットワーク一覧表示

docker@LesPaul:~$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
83e75d03959e        bridge              bridge              local
eedc84aef3cb        host                host                local
0b90af3d24df        none                null                local
Value Description
driver ドライバーの指定
id ネットワークID
label ネットワークに設定されたラベル(label=またはlabel==で指定)
name ネットワーク名
scope ネットワークのスコープ(swarm/global/local)
type ネットワークのタイプ(ユーザー定義ネットワークcustom/定義済みネットワークbuiltin)

実行例:ネットワーク一覧表示のフィルタリング

docker@LesPaul:~$ docker network ls -q --filter driver=bridge
83e75d03959e

例:コンテナ起動

$ docker container run -itd --name=sample ubuntu:latest

実行例:コンテナのネットワーク確認

docker@LesPaul:~$ docker container inspect sample
[
    {
        "Id": "7e287f339630b1d539c87ff0fa0b09f819233ecfc40ceda8982da56ff11d5f8b",
        "Created": "2018-10-21T10:25:55.647551283Z",
        "Path": "/bin/bash",
        "Args": [],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 3771,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-10-21T10:25:56.470254119Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },

~中略~

        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "1afccd40c844c30cce3fc1a547192e887b5afb972ff0adcf46dc37c53172e72d",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/1afccd40c844",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "18c0a11929a10800b7333051229f51ea967f11b78a1ddbf22ac712838f890f53",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "83e75d03959e196ca29727191206adc4feadc167935b8cf61bb8729571cad229",
                    "EndpointID": "18c0a11929a10800b7333051229f51ea967f11b78a1ddbf22ac712838f890f53",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

docker network create(ネットワークの作成)

$ docker network create [オプション] ネットワーク
Options Description
--driver,-d ネットワークブリッジまたはオーバレイ(デフォルトはbridge)
--ip-range コンテナに割り当てるIPアドレスのレンジを指定
--subnet サブネットをCIDR形式で指定
--ipv6 IPv6ネットワークを有効にするかどうか(true/false)
-label ネットワークに設定するラベル

実行例:ブリッジネットワークの作成と確認

docker@LesPaul:~$ docker network create --driver=bridge web-network
0e7abd3f4d7baaa4e433e56f0d6e953daf3f1af24f570231ad720cbfbc95bf6d
docker@LesPaul:~$ docker network ls --filter driver=bridge
NETWORK ID          NAME                DRIVER              SCOPE
83e75d03959e        bridge              bridge              local
0e7abd3f4d7b        web-network         bridge              local

docker network connect/docker network disconnect(ネットワークへの接続)

$ docker network connect [オプション] ネットワーク コンテナ
Options Description
--ip IPv4アドレス
--ip6 IPv6アドレス
--alias エイリアス名
--link 他のコンテナへのリンク

例:ネットワークへの接続

$ docker network connect web-network webfront

実行例:コンテナのネットワーク確認

docker@LesPaul:~$ docker network connect web-network webfront
docker@LesPaul:~$ docker container inspect webfront
[

~中略~

                "web-network": {
                    "IPAMConfig": {},
                    "Links": null,
                    "Aliases": [
                        "dd72a792e0a7"
                    ],
                    "NetworkID": "0e7abd3f4d7baaa4e433e56f0d6e953daf3f1af24f570231ad720cbfbc95bf6d",
                    "EndpointID": "428989f5047ff7422ac6fb567bf464653f6ca8cdc36778de711a28ac37bce529",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:02",
                    "DriverOpts": null
                }
            }
        }
    }
]

例:ネットワークを指定したコンテナの起動

$ docker container run -itd --name=webap --net=web-network nginx

例:ネットワークからの切断

$ docker network disconnect web-network webfront

docker network inspect(ネットワークからの切断)

$ docker network inspect [オプション] ネットワーク

実行例:ネットワークの詳細表示

docker@LesPaul:~$ docker network inspect web-network
[
    {
        "Name": "web-network",
        "Id": "0e7abd3f4d7baaa4e433e56f0d6e953daf3f1af24f570231ad720cbfbc95bf6d",
        "Created": "2018-10-21T19:40:09.658609258+09:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "ac5135fb6709f00b32cf040eb2148d0a084d26c8587fcd5092e0fc0cd595e8d2": {
                "Name": "webap",
                "EndpointID": "3bd1604e500b14d0b0b9685e9e411e5afda921bf3289eaf6260f2e3a935ad1dd",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

docker network rm(ネットワークの削除)

$ docker network rm [オプション] ネットワーク

実行例:ネットワークの削除(※事前に接続中の全コンテナとの接続をdisconnectしておく必要有り)

$ docker network rm web-network

参考資料

https://docs.docker.com/engine/reference/commandline/network_ls/
https://docs.docker.com/engine/reference/commandline/network_create/
https://docs.docker.com/engine/reference/commandline/network_connect/
https://docs.docker.com/engine/reference/commandline/network_disconnect/
https://docs.docker.com/engine/reference/commandline/network_inspect/
https://docs.docker.com/engine/reference/commandline/network_rm/

スポンサーリンク