Около 80% проблем, связанных с тем что "мой Docker-контейнер не работает" - то есть, например, "не видит" соседние контейнеры, "не видит" Internet и пр. связаны с не настроенным или неправильно настроенным пробросом портов (forwarding) на хост-системе.
Иногда, также, "для надёжности" ;-) рекомендуют (пока) отключить поддержку IPv6.
Так, для всех моих сетапов я проделываю следующие манипуляции:
В файле /etc/sysctl.conf
добавить строчки:
net.ipv6.conf.all.forwarding = 1
net.ipv4.conf.all.forwarding = 1
net.ipv6.bindv6only = 0
net.ipv4.ip_forward = 1
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
...и reboot не помешает.
Ну и, как говорится, если совсем ничего не помогает, всегда можно (хоть это и менее безопасно)
запустить контейнер, используя сеть хоста:
docker run -it --network host nginx
В данном режиме маппинг портов не работает - все открытые в контейнере порты автоматически становятся видны снаружи.
Поэтому, в данном случае, следующий шаг это, конечно, конфигурация firewall для хоста.
Но это уже - другая история ;-)