Me gustaría confirmar que esta solución funciona. Estoy en CentOS 8, con Hetzner.
Para ser específico, ejecuté estos comandos en el orden que se muestra a continuación (fuente) - gracias a @paulraines68
# El enmascaramiento permite el tráfico de entrada y salida de Docker (esta es la parte clave)
firewall-cmd --zone=public --add-masquerade --permanent
# Permitir específicamente el tráfico entrante en los puertos 80/443 (nada nuevo aquí)
firewall-cmd --zone=public --add-port=80/tcp
firewall-cmd --zone=public --add-port=443/tcp
# Recargar el cortafuegos para aplicar las reglas permanentes
firewall-cmd --reload