Dockerコンテナのホスト名とIPアドレスを指定してみました。
環境
・CentOS Linux release 7.3.1611 (Core)
・Kernel: 3.10.0-514.16.1.el7.x86_64
・Docker version 17.03.1-ce, build c6d412e
通常はホスト名、IPは自動で割り当てられるようですが、今回は指定してコンテナを起動してみました。
【指定しない場合】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ docker run -it --name mycentos7 centos /bin/bash [root@00337221294a /]# hostname 00337221294a [root@00337221294a /]# yum -y install iproute [root@00337221294a /]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 10: eth0@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 172.17.0.2/16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:acff:fe11:2/64 scope link valid_lft forever preferred_lft forever |
ホスト名の指定は -h, --hostname
, IPアドレスの指定は --ip, --ip6
になります。
指定してコンテナを作成、実行してみます。
1 2 |
$ docker run -it -h centos7 --ip=192.168.100.10 centos /bin/bash docker: Error response from daemon: User specified IP address is supported on user defined networks only. |
エラーの内容からユーザーが指定(作成)したネットワークでのみipオプションが利用できるようです。
現在のDockerネットワーク構成です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
$ docker network ls NETWORK ID NAME DRIVER SCOPE 436b8392e1c5 bridge bridge local a7898b9deded host host local 659ccc4475cf none null local $ docker network inspect bridge [ { "Name": "bridge", "Id": "436b8392e1c5afbf0045b3297dd532411a2fa9870f42d258af0fa09cccbeeddc", "Created": "2017-04-17T11:02:53.564194062+09:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.17.0.0/16" } ] }, "Internal": false, "Attachable": false, "Containers": { "0b8436fd3fc02a3e702c52875027371c3f78f52c2e10a42740bd008d31197a4c": { "Name": "mycentos7", "EndpointID": "50894ca6d7d29349c143c9db9a49068d6f16f69be8b024b18566d9fc026654dd", "MacAddress": "02:42:ac:11:00:04", "IPv4Address": "172.17.0.4/16", "IPv6Address": "" }, "4e96d2ec37494d6cba2d4312fd084c450715b9d014a5c8443dbb9f9d5f43fc32": { "Name": "centos7-sshd", "EndpointID": "723e846c704fce0e73dbe94a2c65004df27d7f58f9c190f81aa0c6849decd131", "MacAddress": "02:42:ac:11:00:02", "IPv4Address": "172.17.0.2/16", "IPv6Address": "" }, "fb942762e4bf925a693135e768fddb0c77e7140b3d9777266707e61d24425530": { "Name": "mycentos6", "EndpointID": "5e55b8c5b6e564516c750470cc6c9508716a59a896bdb527d1758d84108fd9eb", "MacAddress": "02:42:ac:11:00:03", "IPv4Address": "172.17.0.3/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ネットワーク(172.17.0.4/16)とコンテナに割当てられたIPが確認できます。
ブリッジネットワーク br0(192.168.100.0/24)を作成してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
$ docker network create --subnet=192.168.100.0/24 br0 5bad030fbce9f291183f8b9aae561d8cff20192ad7323eee93a6fce2876bdc9e $ docker network ls NETWORK ID NAME DRIVER SCOPE 5bad030fbce9 br0 bridge local 44ea8341f316 bridge bridge local a7898b9deded host host local 659ccc4475cf none null local $ ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:0c:29:b3:f3:9c brd ff:ff:ff:ff:ff:ff inet 192.168.1.1/24 brd 192.168.1.255 scope global eno16777736 valid_lft forever preferred_lft forever inet6 2408:212:d01:b100:20c:29ff:feb3:f39c/64 scope global noprefixroute dynamic valid_lft 14109sec preferred_lft 12309sec inet6 fe80::20c:29ff:feb3:f39c/64 scope link valid_lft forever preferred_lft forever 4: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 02:42:05:62:e0:29 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever 5: br-5bad030fbce9: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN link/ether 02:42:39:c2:66:08 brd ff:ff:ff:ff:ff:ff inet 192.168.100.1/24 scope global br-5bad030fbce9 valid_lft forever preferred_lft forever |
br0(192.168.100.0/24)のipを指定してコンテナを作成、起動してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ docker run -it --name mycentos7-ip -h Docker7 --net=br0 --ip=192.168.100.10 centos /bin/bash [root@Docker7 /]# hostname Docker7 [root@Docker7 /]# yum -y install iproute [root@Docker7 /]# ip add 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP link/ether 02:42:c0:a8:64:0a brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 192.168.100.10/24 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:c0ff:fea8:640a/64 scope link valid_lft forever preferred_lft forever |
br0の192.168.100.10がコンテナmycentos7-ipに割当てられています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
$ docker network inspect br0 [ { "Name": "br0", "Id": "5bad030fbce9f291183f8b9aae561d8cff20192ad7323eee93a6fce2876bdc9e", "Created": "2017-04-18T12:30:05.12867034+09:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.100.0/24" } ] }, "Internal": false, "Attachable": false, "Containers": { "490d4cbdfb7aa92708061be646de9f3fee4f4b9b65580f31aebde49499701f42": { "Name": "mycentos7-ip", "EndpointID": "2ac4fb035ce07681f47f2d29d36c764a20ec4e71cf3356c7c0e4641a6d284c69", "MacAddress": "02:42:c0:a8:64:0a", "IPv4Address": "192.168.100.10/24", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ] |