docker 컨테이너를 실행시키면 네트워크가 끊기는 문제가 발생했다. ssh 세션이 그대로 끊어지고 ping도 도달하지 않는 것이었다.
raspberry os에서만 해당되는듯 하다.
apt를 통하여 docker를 설치했는데, 레퍼런스를 보니 raspberry OS에서는 다른 방식으로 설치하는 경우가 많았다
환경
- raspberry os 64bit
- docker 20.10.7
인터페이스 정보
$ ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:8dff:fe95:5048 prefixlen 64 scopeid 0x20<link>
ether 02:42:8d:95:50:48 txqueuelen 0 (Ethernet)
RX packets 10 bytes 504 (504.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 27 bytes 3738 (3.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether e4:5f:01:1a:eb:20 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 359188 bytes 17963579 (17.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 359188 bytes 17963579 (17.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
vethad84546: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet6 fe80::2cb:9db2:d43:d40a prefixlen 64 scopeid 0x20<link>
inet6 fe80::6492:80ff:fe30:b132 prefixlen 64 scopeid 0x20<link>
ether 66:92:80:30:b1:32 txqueuelen 0 (Ethernet)
RX packets 5 bytes 322 (322.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 36 bytes 4148 (4.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
wlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.13 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::e46e:e447:36de:831 prefixlen 64 scopeid 0x20<link>
ether e4:5f:01:1a:eb:21 txqueuelen 1000 (Ethernet)
RX packets 1312343 bytes 98633413 (94.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1256785 bytes 112423392 (107.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
컨테이너 실행 전 라우팅 정보
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 303 0 0 wlan0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
실행 후 라우팅 정보
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 208 0 0 veth27f89bb
default 192.168.0.1 0.0.0.0 UG 303 0 0 wlan0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.168.0.0 0.0.0.0 255.255.255.0 U 208 0 0 veth47f89bbip route
192.168.0.0 0.0.0.0 255.255.255.0 U 303 0 0 wlan0
만약 컨테이너가 정상적으로 실행되었다면 위 테이블에서 1, 4행이 생성되지 않아야 한다
무언가 격리가 제대로 되지 않았나 예상이 된다.
라우팅 정보 삭제 테스트
sudo route del -net default gw 192.168.0.1 netmask 0.0.0.0 dev veth27a4e5c
sudo route del -net 192.168.0.0 gw 0.0.0.0 netmask 255.255.255.0 dev veth27a4e5c
위와 같이 추가된 라우팅 정보를 삭제해 주니 정상적으로 접근이 된다
정리
이 문제는 결국 해결하지 못하고 ubuntu OS로 변경하게 되었다.
만약 추후에 패키지 관리자 측에서 업데이트가 되면 자연스럽게 해결될지도 모르겠다.
사실 이전에는 docker가 정상 작동했었는데 왜 갑자기 안되는지는 모르겠다 (고정 ip로 변경하긴 했다)
혹시 같은 문제를 겪는 사람이 있을까 하여 포스팅한다
'docker' 카테고리의 다른 글
| [docker] Fatal error cannot install symlinks in /usr/local/bin (stage 5) 맥북에 docker 설치시 에러 (0) | 2021.12.20 |
|---|