Хочу подтвердить, что это решение работает. Я использую CentOS 8 от Hetzner.
Если быть точным, я выполнил следующие команды в указанном порядке (источник) — спасибо @paulraines68.
# Маскирование позволяет обеспечить входящий и исходящий трафик для Docker (это ключевой момент)
firewall-cmd --zone=public --add-masquerade --permanent
# Разрешить входящий трафик конкретно на порты 80/443 (ничего нового здесь нет)
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=443/tcp
# Перезагрузить брандмауэр для применения постоянных правил
firewall-cmd --reload