dockerをインストールしただけなのに...
概要
HostAにDockerをインストールした所、HostBとうまく通信できなくなった。原因を究明してHostAからHostBにsshができるようにしてほしい。
前提条件
Dockerを停止させない最終的にDockerが起動している状態にする- HostA上のルーティングの設定を変更しない
初期状態
HostAからHostBにsshしようとするとうまくできない。
終了状態
原因を究明し、HostAからHostBにsshができるようになる。
解説
この問題は、Dockerインストール時に生成されるインターフェースであるdocker0
のIPアドレスがHostBと被ってしまうため期待通りの通信ができなくなったという問題でした。
原因特定の方法としては、ip route
を実行してHostAのルーティングテーブルを確認をする方法などがあげられます。
解決方法は、damon.json に bipオプションを追記してネットワーク・ブリッジ IP の指定をした後にDockerを再起動することで問題を解決することができます。
/etc/docker/daemon.json
{
"bip":"10.255.255.1/24" ←172.17.0.1から外れるように書いてあれば何でも良い
}
dockerの再起動
sudo systemctl restart docker
講評
かなり正当数の多い問題でした。
別解として/lib/systemd/system/docker.service を編集してオプション指定している方がいました。
こちらは前提条件に抵触しておらず問題解決もできていたため完答扱いになりました。