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

관련 정보