BLOGTIMES
2021/02/19

docker-compose を使っているとホストに ssh できなくなる

  docker 
このエントリーをはてなブックマークに追加

docker-compose を使っていると、SSH 等でホストにアクセスできなくなることがあって困っていました。

タイミングとしては docker-compose up -d を行ったときに起きるので、この状態で何が起きているのかコンソールから確認を行ってみたらdocker のネットワークとして 192.168.###.### のネットワークが作成されてしまっていました。

docker-compose でコンテナの up/down を行うとネットワークがそのたびに作り直されることになりますが、そのときに/16 のようにかなり大きなネットワークが割り振られてしまうことは認識していいました。ただ、172.16.0.0/12 の範囲を使い切ってしまうと、192.168.0.0/16 の範囲を割り振りし始めるとは予想外でした。そして、運悪くこの割り振られるプライベートネットワークの範囲が、既存のプライベートネットワークと被ってしまうと通信できなくなるわけですね。

この挙動については daemon.jsondefault-address-pools を指定することで調整できるようです。
僕の使い方では /24 とかで十分(更にいえば 99% 以上 /28 で大丈夫)なので、こんな感じに設定変更することにしました。

/etc/docker/daemon.json

{ ・・・・・・・・・・・・・・ "default-address-pools":[ { "base":"172.16.0.0/12", "size":24 } ], ・・・・・・・・・・・・・・ }

    トラックバックについて
    Trackback URL:
    お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
    このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/12302
    Trackbacks
    このエントリにトラックバックはありません
    Comments
    愛のあるツッコミをお気軽にどうぞ。[policy]
    古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
    コメントはありません
    Comments Form

    コメントは承認後の表示となります。
    OpenIDでログインすると、即時に公開されます。

    OpenID を使ってログインすることができます。

    Identity URL: Yahoo! JAPAN IDでログイン