Você está sugerindo que não usou docker-compose para iniciá-lo, mas um docker run normal. Eu procuraria docker-compose , porque então você poderia ter parado e iniciado novamente com um novo arquivo de configuração. Isso permite criação reproduzível de um contêiner. Todos os exemplos de como usar docker run em todos os lugares não ajudam em nada.
No seu caso particular, acho que tudo o que você precisa fazer é adicionar uma regra iptables . Por padrão, dockerd manipula as regras iptables para redirecionar o tráfego (pode até ser a única coisa que o EXPOSE faz). Se você fizer iptables -t nat -L -n , provavelmente poderá ver como suas portas foram expostas. Você pode criar uma regra semelhante.
Isso significa que, quando você reinicia o servidor, a regra desaparece novamente. Você terá que salvar seu estado iptables . E isso, então, também afeta a inconveniência de dockerd manipular iptables . É difícil gerenciá-lo junto a outros serviços que acessam o iptables (como sistemas de configuração central, fail2ban ou até mesmo um simples salvamento automático de suas regras).