Dockerコンテナが実行されている場合は、デフォルトゲートウェイを削除できません。

Dockerコンテナが実行されている場合は、デフォルトゲートウェイを削除できません。

Raspbianを実行しているRaspberry Piからデフォルトパスを削除したいです。

これが私が得たものですroute -n

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.178.1   0.0.0.0         UG    203    0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     204    0        0 docker0
169.254.0.0     0.0.0.0         255.255.0.0     U     206    0        0 veth07ba603
172.17.0.0      0.0.0.0         255.255.0.0     U     0      0        0 docker0
192.168.178.0   0.0.0.0         255.255.255.0   U     203    0        0 eth1

ゲートウェイを削除するために、次のコマンドを試しました。

ip route del default via 192.168.178.1 dev eth1
route del default gw  192.168.178.1
route del default gw  192.168.178.1 dev eth1
route del -net 0.0.0.0 gw 192.168.178.1 netmask 0.0.0.0 dev eth1
ip route del 0.0.0.0/0

それらのどれも動作しません。

再度実行すると、route -nパスはそのまま残り、インターネットにアクセスできます。

システムログもよさそうです。

Dec  3 02:42:21 pi dhcpcd[474]: eth1: deleted default route via 192.168.178.1

修正する:

この問題はDockerコンテナを実行したときにのみ発生することがわかりました。たとえば、次のようになります。

docker run --name 'foo' -itd alpine /bin/sh

コンテナがシャットダウンしたら、ゲートウェイを削除できます。ただし、何らかの理由で起動コンテナを使用すると、dockerはデフォルトゲートウェイを再生成しますdocker start foo。コンテナが実行中の場合、ゲートウェイをまったく削除できません(上記を参照)。

ここで何が起こっているのか知っている人はいますか?デフォルトゲートウェイなしでコンテナを実行する方法は? Piはインターネットに接続してはいけません。

ベストアンサー1

解決策は、次の行を追加してPiに静的IPを割り当てることです/etc/dhcpcd.conf

interface eth1
static ip_address=192.168.178.10

これで、Dockerコンテナが実行されているかどうかにかかわらず、期待どおりにaddデフォルトゲートウェイを使用できるようになりました。del

おすすめ記事