ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

RancherOSでDockerのデフォルトブリッジのサブネットを変更する方法

RancherOSでDockerのデフォルトブリッジのサブネットを変更する方法を調べていました。なかなか目的の情報を見つけられなかったので、ここにまとめてみます。

ちなみにRancherOSとは軽量なコンテナー向けOSで、物理マシンにインストールするためのISOのほか、様々な形態でOSイメージが提供されています。

rancher.com

先日OpenStack環境をセットアップできて割と快適に動かせているので、その上でいろいろ動かしてみようと思いました。 そんな中、RancherOSのOpenStackイメージがあるのかなと調べたら随分前のバージョンから配布されているのを知りました。OpenStackのインスタンスとして使う場合、「config drive」を設定してインスタンスをあげないと起動したRancherOSにログインできなくて悲しい思いをしますので要注意ですね。

qiita.com

さて、Dockerを使う上でいつも問題になるのがデフォルトブリッジのサブネットが「172.17.0.0/16」がデフォルトで使われる件です。会社では個人に最低一つのVLANとネットワークが割り当てられているのですが、ちょうど「172.17.0.0/16」の範囲を使っているので設定を変更しないとネットワーク疎通が通らなくなってしまいます。

RancherOSでこのdocker0が利用するサブネットをどう変えるのかなと思って調べたのですが、system-dockerの方の設定変更しか見つけられませんでした。

rancher.com

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を使うことができます。

このブログサイトはJavaScriptを使っていますが、読み込んでいるJavaScriptは全てはてなが提供しているものであり、筆者が設置しているものではありません。