TOP

DockerでIP指定する

2016-10-03 20:09:34

タイトルどおりですが、少し新しい使い方を覚えたので忘れないようメモ

DockerでIP指定

DockerでIP指定をするには、docker run実行時に--ip=[IPアドレス]を指定する

$ docker run --privileged -d -it --ip=172.18.0.2 --hostname [CONTAINER] --name [CONTAINER] debian:latest /sbin/init

しかしこれだけでは、

docker: Error response from daemon: User specified IP address is supported on user defined networks only.

と出て、自分で作成したネットワーク以外でIPは使えませんと怒られる

Dockerでブリッジ作成

Dockerでブリッジ作成は、docker network createコマンドを使用

まずは現在のネットワークを確認

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
75bc40d1ca70        bridge              bridge              local
56534f2dce38        host                host                local
a00e9c324b5b        none                null                local

ブリッジを作る

$ docker network create --subnet=172.18.0.0/16 br0

追加されたか確認

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
cd132cd1e1b3        br0                 bridge              local
75bc40d1ca70        bridge              bridge              local
56534f2dce38        host                host                local
a00e9c324b5b        none                null                local

$ docker network inspect br0
[
    {
        "Name": "br0",
        "Id": "cd132cd1e1b334ccf3767fe914a3f65068181e2a4d6fb04d8ddcf64ef26a1f60",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "46dccdbcc1cfc77f26dea1c2b0f7041eabef50233c864e21dd79668f588d23c3": {
                "Name": "hoge",
                "EndpointID": "0a830e10cc750c3ef4215a70673424dc43e6ddafa6c8a563d6cdcacf7d7e39e1",
                "MacAddress": "00:00:00:00:00:00",
                "IPv4Address": "172.18.0.100/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

作成したブリッジを使うには、--net=[ブリッジ名]を使う

$ docker run --privileged -d -it --net=br0 --ip=172.18.0.2 --hostname [CONTAINER] --name [CONTAINER] debian:latest /sbin/init"