RancherOSでDockerのデフォルトブリッジのサブネットを変更する方法を調べていました。なかなか目的の情報を見つけられなかったので、ここにまとめてみます。
ちなみにRancherOSとは軽量なコンテナー向けOSで、物理マシンにインストールするためのISOのほか、様々な形態でOSイメージが提供されています。
先日OpenStack環境をセットアップできて割と快適に動かせているので、その上でいろいろ動かしてみようと思いました。 そんな中、RancherOSのOpenStackイメージがあるのかなと調べたら随分前のバージョンから配布されているのを知りました。OpenStackのインスタンスとして使う場合、「config drive」を設定してインスタンスをあげないと起動したRancherOSにログインできなくて悲しい思いをしますので要注意ですね。
さて、Dockerを使う上でいつも問題になるのがデフォルトブリッジのサブネットが「172.17.0.0/16」がデフォルトで使われる件です。会社では個人に最低一つのVLANとネットワークが割り当てられているのですが、ちょうど「172.17.0.0/16」の範囲を使っているので設定を変更しないとネットワーク疎通が通らなくなってしまいます。
RancherOSでこのdocker0が利用するサブネットをどう変えるのかなと思って調べたのですが、system-dockerの方の設定変更しか見つけられませんでした。
RancherOSはシステム周りはsystem-dockerの上で動いています。通常、ユーザーが使うのはUser Dockerの方で今回問題になっているのはUser Dockerで使うブリッジ docker0側の話です。で、まあどうやって解決したかなのですが、一般的なDockerの対処と一緒でした。次のように対応しました。
daemon.jsonにbipを定義します。
~$ sudo vi /etc/docker/daemon.json { "bip": "172.26.0.1/16" }
で、この後最近の一般的なLinuxディストリビューションだとdockerサービスを再起動すると思いますが、RancherOSでは再起動してみました。
~$ sudo reboot
確認してみます。
~$ ip a s docker0 | grep inet inet 172.26.0.1/16 brd 172.26.255.255 scope global docker0
うまくいきました。念の為、きちんとコンテナーが起動して外と通信できるか確認してみます。
~$ docker run --rm -it busybox ping -c4 172.17.14.1 Unable to find image 'busybox:latest' locally latest: Pulling from library/busybox 8e674ad76dce: Pull complete Digest: sha256:7a4d4ed96e15d6a3fe8bfedb88e95b153b93e230a96906910d57fc4a13210160 Status: Downloaded newer image for busybox:latest PING 172.17.14.1 (172.17.14.1): 56 data bytes 64 bytes from 172.17.14.1: seq=0 ttl=253 time=1.840 ms 64 bytes from 172.17.14.1: seq=1 ttl=253 time=30.978 ms 64 bytes from 172.17.14.1: seq=2 ttl=253 time=1.024 ms 64 bytes from 172.17.14.1: seq=3 ttl=253 time=1.165 ms --- 172.17.14.1 ping statistics --- 4 packets transmitted, 4 packets received, 0% packet loss round-trip min/avg/max = 1.024/8.751/30.978 ms
これで自社のVLANネットワーク配下でも、RancherOSを使うことができます。