LoginSignup
9
14

More than 3 years have passed since last update.

ホストPCと同じセグメントのIPアドレスをDockerコンテナに割り当てる

Last updated at Posted at 2019-03-13

macvlanドライバを利用するNetworkを作成して、docker run時に利用することで、ホストPCと同セグメントのIPアドレスを割り当てて、コンテナを動作させることができます。

Networking using a macvlan network

Ubuntu 18.04で動作を確認

Networkの作成

$ docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.254 -o parent=enp4s0 mynet

上記の例では、mynetという名称でアダプタが作成されます。
--subnet--gatewayには、ホストと同じネットワークの値を指定。-o parentには、ホストのアダプタID(ifconfig参照)を指定します。

$ ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        inet6 xxxx::xx:xxxx:xxxx:xxxx  prefixlen 64  scopeid 0x20<link>
        ether xx:xx:xx:xx:xx:xx  txqueuelen 0  (イーサネット)
        RX packets 351  bytes 3305069 (3.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 262  bytes 26479 (26.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp4s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
...

コンテナ起動

$ docker run -d --name nginx20 --network mynet --ip 192.168.1.20 -p 80:80 nginx

--networkに先ほど作成したNetworkを指定、--ipにコンテナへ割り当てたいIPアドレスを指定して起動することで、該当IPアドレスで動作します。

制限事項

ネットワークアダプタの仕組み上?、ホストPCのローカルから、本ネットワークを割り当てたコンテナのIPアドレスにはアクセスできません。

9
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
14