docker iptables: No chain/target/match by that name 에러 발생 해결하기
Updated on
이 문제는 어디에선가 iptables -F 명령어로 iptables 를 초기화 하면서
docker network iptables 이 초기화되었기 때문이다.
iptables -t nat -L -n -v 명령어로 확인해보면 알 수 있다.
이 문제를 해결하려면 단순하게
systemctl restart docker
위 명령어로 도커를 재실행 해주면 된다.
나 같은 경우는 특정 커널에서 iptables -F 명령어를 입력하게 되어있기 때문에
도커와 같이 사용하려면, reboot 이후에 도커 서비스를 재시작 시켜줘야만 했다.
그런데 중간에도 iptables -F가 발생될때가 있었고,
이 문제를 해결하기 위해서 간단한 스크립트를 실행되게 했다.
/root/check-docker-iptables.sh
#!/bin/bash
# Docker chain이 있는지 확인
if ! iptables -t nat -L DOCKER >/dev/null 2>&1; then
logger "Docker iptables chain missing, restarting Docker service"
systemctl restart docker
else
logger "Docker iptables chains are present"
fi
/etc/cron.d/docker-iptables
* * * * * root /root/check-docker-iptables.sh
이렇게 crontab 에 iptables 체크 후 docker 내용이 없으면, 도커를 재실행 시키게 만들었다.