Windows 2019
Sponsored Link

Docker : Docker Network2020/12/16

 
Docker コンテナーのネットワーク管理の基本操作です。
[1] コンテナー起動時にネットワークを指定しない場合は、デフォルトの [nat] が使用されます。
# ネットワーク一覧表示

PS C:\Users\Administrator>
docker network ls

NETWORK ID          NAME                    DRIVER              SCOPE
835e5265281e        administrator_default   nat                 local
84fb0716e654        nat                     nat                 local
4a4ab2bf8de9        none                    null                local

# [nat] の詳細表示

PS C:\Users\Administrator>
docker network inspect nat

[
    {
        "Name": "nat",
        "Id": "84fb0716e654da933857ea23cf9b7bb45c615583af0df2586281dc7099786326",
        "Created": "2020-12-15T22:03:50.6680838-08:00",
        "Scope": "local",
        "Driver": "nat",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "windows",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.224.0/20",
                    "Gateway": "172.18.224.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {
            "com.docker.network.windowsshim.hnsid": "848A89F5-CFB3-4D77-818A-3DC49C4C6DFB",
            "com.docker.network.windowsshim.networkname": "nat"
        },
        "Labels": {}
    }
]

# コンテナーのネットワークはデフォルトでは [nat] が使用される

PS C:\Users\Administrator>
docker run mcr.microsoft.com/windows/servercore:1809 powershell -c "ipconfig"


Windows IP Configuration

Ethernet adapter vEthernet (Ethernet):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::f017:c45a:9576:257a%21
   IPv4 Address. . . . . . . . . . . : 172.18.232.152
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.18.224.1
[2] デフォルトの [172.18.224.0/20] 以外のサブネットでコンテナーを起動したい場合は、以下のように実行します。
# [network01] ネットワークを [192.168.100.0/24] のサブネットで作成

PS C:\Users\Administrator>
docker network create -d "nat" --subnet "192.168.100.0/24" network01

b6ccadd1101d02118f69b1649e33e9b56f88152fd0ed56da647ba5feeb7d18e3
PS C:\Users\Administrator>
docker network ls

NETWORK ID          NAME                    DRIVER              SCOPE
835e5265281e        administrator_default   nat                 local
84fb0716e654        nat                     nat                 local
b6ccadd1101d        network01               nat                 local
4a4ab2bf8de9        none                    null                local

# [network01] ネットワークを指定してコンテナーを起動

PS C:\Users\Administrator>
docker run --net network01 mcr.microsoft.com/windows/servercore:1809 powershell -c "ipconfig"


Windows IP Configuration

Ethernet adapter vEthernet (Ethernet):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::6973:b329:3b79:68df%25
   IPv4 Address. . . . . . . . . . . : 192.168.100.206
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.100.1

# 起動済みのコンテナーに作成したネットワークを接続する場合は以下

PS C:\Users\Administrator>
docker ps

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
43f4fd5c7833        srv.world/iis       "cmd"               10 seconds ago      Up 8 seconds        0.0.0.0:8081->80/tcp   quirky_hermann

PS C:\Users\Administrator>
docker exec 43f4fd5c7833 powershell -c "ipconfig"


Windows IP Configuration

Ethernet adapter vEthernet (Ethernet):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::480c:fc3b:6b06:a363%25
   IPv4 Address. . . . . . . . . . . : 172.18.228.192
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.18.224.1

# サブネット内の任意の IP アドレスを指定してコンテナーに割り当て

PS C:\Users\Administrator>
docker network connect --ip 192.168.100.10 network01 43f4fd5c7833
PS C:\Users\Administrator>
docker exec 43f4fd5c7833 powershell -c "ipconfig"


Windows IP Configuration

Ethernet adapter vEthernet (Ethernet):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::480c:fc3b:6b06:a363%25
   IPv4 Address. . . . . . . . . . . : 172.18.228.192
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.18.224.1

Ethernet adapter vEthernet (Ethernet) 2:

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::d9ca:8ddc:a838:cdc%29
   IPv4 Address. . . . . . . . . . . : 192.168.100.10
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.100.1

# 接続したネットワークを切断する場合は以下

PS C:\Users\Administrator>
docker network disconnect network01 43f4fd5c7833

PS C:\Users\Administrator>
docker exec 43f4fd5c7833 powershell -c "ipconfig"


Windows IP Configuration

Ethernet adapter vEthernet (Ethernet):

   Connection-specific DNS Suffix  . :
   Link-local IPv6 Address . . . . . : fe80::480c:fc3b:6b06:a363%25
   IPv4 Address. . . . . . . . . . . : 172.18.228.192
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.18.224.1
[3] 作成した Docker ネットワークを削除する場合は以下のように実行します。
PS C:\Users\Administrator>
docker network ls

NETWORK ID          NAME                    DRIVER              SCOPE
835e5265281e        administrator_default   nat                 local
84fb0716e654        nat                     nat                 local
b6ccadd1101d        network01               nat                 local
4a4ab2bf8de9        none                    null                local

# [network01] を削除

PS C:\Users\Administrator>
docker network rm network01

network01
# コンテナーで使用されていないネットワークを一括削除

PS C:\Users\Administrator>
docker network prune

WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Networks:
administrator_default
[4] デフォルトの [nat] ではなくホストネットワークに接続する場合は以下のように実行します。
# ネットワークアダプター名確認

PS C:\Users\Administrator>
Get-NetAdapter


Name                      InterfaceDescription                    ifIndex Status       MacAddress             LinkSpeed
----                      --------------------                    ------- ------       ----------             ---------
vEthernet (nat)           Hyper-V Virtual Ethernet Adapter              9 Up           00-15-5D-9F-81-EC        10 Gbps
Ethernet                  Intel(R) 82574L Gigabit Network Conn...       5 Up           52-54-00-05-80-B8         1 Gbps

# [transparent] ドライバーで [transparent01] ネットワーク作成

# [com.docker.network.windowsshim.interface="***"] は上で確認したアダプター名

PS C:\Users\Administrator>
docker network create -d transparent -o com.docker.network.windowsshim.interface="Ethernet" transparent01
PS C:\Users\Administrator>
docker network ls

NETWORK ID          NAME                DRIVER              SCOPE
84fb0716e654        nat                 nat                 local
4a4ab2bf8de9        none                null                local
83d4393b8873        transparent01       transparent         local

PS C:\Users\Administrator>
docker network inspect transparent01

[
    {
        "Name": "transparent01",
        "Id": "83d4393b8873869ea6965af480b4d45ddc61995615eb96e4b4e83ce6f4c1d0e9",
        "Created": "2020-12-15T23:57:06.3332974-08:00",
        "Scope": "local",
        "Driver": "transparent",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "windows",
            "Options": {},
            "Config": [
                {
                    "Subnet": "0.0.0.0/0"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "f655e188d62d5c595a83b51b18ff6c57519072d8fa4bd6e384760543bef979f1": {
                "Name": "hungry_swirles",
                "EndpointID": "42397562c0296c3763cdd704be2a761e4759b408b415a001714e839db327850e",
                "MacAddress": "00:15:5d:63:80:eb",
                "IPv4Address": "",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.windowsshim.hnsid": "21B4D02D-4FD6-40B9-A2A6-1E07CC138842",
            "com.docker.network.windowsshim.interface": "Ethernet"
        },
        "Labels": {}
    }
]

PS C:\Users\Administrator>
docker images

REPOSITORY                             TAG                 IMAGE ID            CREATED                  SIZE
srv.world/iis-server                   latest              d0b43de1e6a4        4 hours ago              5.32GB
mcr.microsoft.com/windows/servercore   1809                5c1f582f60a9        12 days ago              5.12GB

# [transparent01] ネットワークを指定してコンテナー起動

PS C:\Users\Administrator>
docker run -t -d --net transparent01 srv.world/iis-server

f655e188d62d5c595a83b51b18ff6c57519072d8fa4bd6e384760543bef979f1

PS C:\Users\Administrator>
docker ps

CONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS               NAMES
f655e188d62d        srv.world/iis-server   "cmd"               27 seconds ago      Up 25 seconds       80/tcp              hungry_swirles

# IP アドレス確認 (DHCP サーバーから自動取得)

PS C:\Users\Administrator>
docker exec f655e188d62d powershell -c "ipconfig"


Windows IP Configuration

Ethernet adapter vEthernet (Ethernet) 2:

   Connection-specific DNS Suffix  . : srv.world
   Link-local IPv6 Address . . . . . : fe80::fc34:3e2d:f775:f192%21
   IPv4 Address. . . . . . . . . . . : 10.0.0.204
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 10.0.0.1

# アクセス確認

PS C:\Users\Administrator>
curl.exe 10.0.0.204

Dockerfile test example
関連コンテンツ