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 내용이 없으면, 도커를 재실행 시키게 만들었다.