Как вы публикуете порты из контейнера 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.

Пожалуйста, посмотрите эту проблему и комментарий:

https://github.com/moby/moby/issues/26824

Другие вопросы по тегам