AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 798986
Accepted
davidA
davidA
Asked: 2016-08-25 21:47:24 +0800 CST2016-08-25 21:47:24 +0800 CST 2016-08-25 21:47:24 +0800 CST

Usando o redirecionamento de porta iptables com docker

  • 772

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 do iptables (conforme 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, em vez de http://myserver:8080):

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -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 buildcomando. Por exemplo, RUN apt-get updatefalha com vários erros "falha ao baixar". Fazer wget http://www.google.comdentro do container retorna o HTML para a página principal do Jenkins. HTTP GETs do host funcionam bem. A remoção das regras do iptables resulta no RUN apt-get updatefuncionamento novamente. Então, acho que essas regras do 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 do iptables para resolver esse problema?

port-forwarding iptables docker jenkins redirection
  • 1 1 respostas
  • 7641 Views

1 respostas

  • Voted
  1. Best Answer
    davidA
    2016-08-29T19:18:26+08:002016-08-29T19:18:26+08:00

    Uma possível modificação nas regras do iptables é remover ambos e substituir por:

    iptables -t nat -A PREROUTING -p tcp -m tcp -i eth0 --dport 80 -j REDIRECT --to-ports 8080
    

    Isso garantirá que, no meu caso, apenas o tráfego TCP na porta 80 através da interfaceeth0 seja redirecionado. O tráfego originado de um contêiner docker no host não será redirecionado. Observe que deixei de fora o redirecionamento de localhost também, embora presumivelmente isso possa ser modificado para evitar a filtragem de qualquer coisa originária de interface docker0.

    Outra solução é empregar um proxy reverso para encaminhar as solicitações HTTP recebidas na porta TCP 80 para a porta 8080 do host. Usei o Caddy com o seguinte Caddyfile simples:

    localhost:80
    proxy / localhost:8080
    

    Com isso instalado, posso remover totalmente as regras do iptables.

    Isso parece fornecer um redirecionamento simples na porta 80, além de permitir que os contêineres do docker usem HTTP de saída normalmente.

    • 7

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve