iptables - Mapeia a porta no host para uma porta em um contêiner Docker

1

Estou usando um contêiner Docker dentro do AWS Elastic Beanstalk, rodando o Amazon 'Amazon Linux', que eu acredito ser um derivado do CentOS.

No meu ambiente de desenvolvimento, gostaria de ativar a depuração no meu aplicativo para que eu possa depurar remotamente da minha máquina local. Obviamente, isso requer uma porta adicional, mas a AWS, por padrão, só mapeará uma porta no contêiner Docker para o host.

Estou na máquina e vejo que o contêiner Docker tem um endereço local (172.x.x.x) e posso acessar a porta de depuração diretamente nesse endereço quando estou no host. O problema é que esse endereço não é acessível da minha máquina local.

Gostaria de criar manualmente uma regra de encaminhamento de porta para encaminhar chamadas em <my-aws-host-ip>:<port> para <docker-local-ip>:<port> , para que eu possa se conectar para a depuração remota. Eu acredito que o iptables é provavelmente a ferramenta certa para isso, mas eu não estou familiarizado com o seu uso. Como posso alcançar esse objetivo?

    
por dsw88 15.07.2016 / 20:06

1 resposta

0

Crie um Dockerfile sem configuração como:

//Dockerfile

FROM somePkg:1.2.3
EXPOSE 1337 8080 8081

Isso em mente, você NÃO terá acesso via PrivateIP, APENAS o PublicIP. Você precisará ficar ainda mais chocado por isso, e o ElasticBeanstalk da AWS já cria algumas regras de iptables a seu favor. Cabe a você obter o contêiner docker para mapear as portas, se não estiver usando v2 do arquivo Dockerrun.aws.json .

Lembre-se também de que o ElasticBeanstalk da AWS encaminha automaticamente a primeira porta da lista para a porta 80.

Então, nesse caso, seria external_interface:80 -> docker_container:1337

    
por 16.03.2018 / 21:40