Eu tenho um servidor Linux executando Jenkins (HTTP na porta 8080) e o mesmo servidor também está executando o Docker 1.12.1. Usei algumas regras iptables (de acordo com os documentos oficiais de instalação do Jenkins) para redirecionar a porta 8080 para a porta 80 do host, para que o HTTP padrão funcionasse para o Jenkins (ou seja, http://myserver
que http://myserver:8080
):
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
No entanto, essas regras quebram a capacidade do Docker de baixar os recursos corretos via HTTP durante um docker build
comando. Por exemplo, RUN apt-get update
falha com vários erros de" falha ao baixar". Estar wget http://www.google.com
dentro do contêiner retorna o HTML para a página principal do Jenkins. HTTP obtém do host funciona bem. Remover as regras iptables resulta em RUN apt-get update
a trabalhar outra vez. Então, acho que essas regras iptables estão interferindo no mecanismo de rede do docker.
Esse redirecionamento de porta pode coexistir com o Docker? Em caso afirmativo, como alguém escreveria regras iptables para resolver esse problema?