Work Records

日々の作業記録です。ソフトウェアエンジニアリング全般から、趣味の話まで。

dockerコンテナに静的なIPをふりたい

dockerのコンテナは立ち上げる毎にIPが変わる

コンテナ立ち上げる毎に、新しくIPが付けられる模様。

immutable infrastructure的な考えだと、IPコロコロ変わっても管理側で頑張れよってかんじはする

そもそもdockerは使い捨てが気軽に出来る様にできているので、IPを固定にして管理しようとする事自体センスが無いような気はしなくもない。

でも付けてみた

でも、固定で付けたい時はある。
色々調べてみると、どうやらsecondary ipにはあとからIPがふれるらしい

コマンド
(IPやインターフェースは読み替えてください)

ip addr add 172.17.128.5/16 dev eth0

結果

eth0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet 172.17.128.5/16 scope global secondary eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:3/64 scope link 
       valid_lft forever preferred_lft forever

注意

注意1

DHCPのように、空いているIPを選んできてふる必要がある。例えば、コンテナに割り振っているレンジの中でpingが通らないものを選択するような仕組みが必要。
もしくは何らかの方法で絶対に被らない事を担保する仕組み。

注意2

docker inspect --format '{{ .NetworkSettings.IPAddress }}' CIP

で出て来るIPは依然としてprimaryのみ。プログラム内で動的にIPを取得する事は出来無いので、configなどにsecondaryで振りたいIPは管理するしかなさそう。


[asin:4774174416:detail]