Как вы публикуете порты из контейнера Docker в системе, используя nftables?
У меня довольно простая установка Debian Buster. Debian Buster использует nftables, а не iptables. Если я попытаюсь запустить контейнер с опубликованным портом:
sudo docker run -it --rm --name=port-test -p 1234:1234/tcp debian:jessie-slim
тогда я получаю эту ошибку:
docker: Error response from daemon: driver failed programming external connectivity on endpoint port-test (941052b9f420df39ac3d191dcbe12e97276703903911e7b5172663e7736d59e0): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 1234 -j DNAT --to-destination 172.17.0.2:1234 ! -i docker0: iptables v1.8.2 (nf_tables): Chain 'DOCKER' does not exist
Как заставить работать публикацию портов?
2 ответа
Вы можете запустить
sudo update-alternatives --config iptables
а также
sudo update-alternatives --config ip6tables
(если вы используете IPv6) и установите для него значение
iptables-legacy
это режим совместимости, с которым может работать Docker.
Пожалуйста, посмотрите эту проблему и комментарий: