Como encaminhar porta no Docker

Como Encaminhar Porta No Docker



Docker é uma plataforma de dockerização popular que encaixa aplicativos e software em um ambiente isolado conhecido como contêiner. Ao executar aplicativos em contêineres, os usuários geralmente são obrigados a acessar o aplicativo em contêiner fora do contêiner. Para tanto, os usuários precisam aplicar a técnica de encaminhamento de porta.

O encaminhamento de porta no Docker é um processo que nos permite expor a porta do contêiner no sistema host Docker. Ele nos permite executar o aplicativo em um ambiente isolado e também torná-lo acessível de fora do contêiner na máquina do usuário.

Esta postagem irá demonstrar:







Como encaminhar porta no Docker usando a tag “-p” ou “–publish”

Para encaminhar uma porta no Docker, o usuário precisa publicar a porta do contêiner no host Docker. Para isso, execute o contêiner no host docker usando o comando “ -p ' ou ' -publicar ” na tag “ execução do docker ” comando.



Para uma demonstração adequada, siga as instruções abaixo.



Etapa 1: crie o Dockerfile

Primeiro, crie um arquivo e defina seu nome como “ Dockerfile ”. Este arquivo contém as instruções textuais para criar o modelo do contêiner Docker. Por exemplo, vamos encaixar o programa Golang simples usando o trecho abaixo no Dockerfile:





DE golang: 1,8

DIRTRABALHO / ir / fonte / aplicativo

COPIE main2.go.

CORRE, vá construir -o servidor web .

EXPOR 8080

DMC [ './servidor web' ]

No trecho fornecido:

  • DE ”O comando é utilizado para definir a imagem base.
  • DIRTRABALHO ”Define o diretório de trabalho do contêiner.
  • CÓPIA DE ”O comando criará uma cópia do arquivo do programa no caminho especificado pelo contêiner.
  • CORRER ”O comando executará o comando especificado no contêiner.
  • EXPOR ”O comando especifica a porta onde o contêiner será escutado.
  • DMC ”especifica os pontos executáveis ​​do contêiner.

Etapa 2: Crie um programa Golang

Em seguida, crie outro arquivo chamado “ main2.go ”E cole o programa Golang fornecido abaixo que imprime uma string simples na porta“ 8080 ”:



pacote principal

importar (

'fmt'

'registro'

'rede/http'

)

manipulador de funções ( Em http.ResponseWriter, r * http.Solicitação ) {

html := `

DOCTYPEHTML >

< HTML >

< cabeça >

< título > Olá Golang ! título >

< estilo >

corpo {

cor de fundo: #D2B48C;

}

.recipiente {

alinhamento de texto: centro;

preenchimento: 50px;

}

estilo >

cabeça >

< corpo >

< divisão aula = 'recipiente' >

< h1 > Olá ! Bem vindo ao Tutorial LinuxHint h1 >

divisão >

corpo >

HTML >`

w.Cabeçalho ( ) .Definir ( 'Tipo de conteúdo' , 'texto/html' )

fmt.Fprint ( Em , HTML )

}

função principal ( ) {

http.HandleFunc ( '/' , manipulador )

log.Fatal ( http.ListenAndServe ( '0.0.0.0:8080' , nada ) )

}

Etapa 3: gerar o instantâneo do contêiner

Agora, gere um instantâneo para o contêiner a partir do Dockerfile especificado acima. Para isso, primeiro navegue até o diretório onde o Dockerfile é criado usando o botão “ cd ”comando:

A seguir, gere a nova imagem do contêiner usando o comando fornecido:

construção do docker -t golang-img .

O resultado fornecido mostra que a imagem é criada de acordo com o contexto de construção fornecido.

Etapa 4: encaminhar a porta do host para a porta do contêiner

Agora, execute o contêiner e encaminhe a porta do host para a porta do contêiner para acessar o aplicativo dockerize fora do contêiner em uma máquina local. Para isso, execute o “docker run –name -p : ”comando:

execução do docker --nome vá-cont -p 8080 : 8080 golang-img

Aqui o ' -p ”O sinalizador é utilizado para publicar a porta de execução do contêiner no host docker:

Etapa 5: verificação

Para verificação, visualize os contêineres em execução usando “ janela de encaixe ps ”:

janela de encaixe obs:

No resultado abaixo, o aplicativo em contêiner está escutando as interfaces de rede disponíveis “ 0.0.0.0 ”na porta publicada“ 8080 ”. Isso implica que a porta seja encaminhada para o aplicativo em execução na máquina host:

Agora, inicie o navegador e navegue até “ http://localhost:8080/ ” e verifique se a técnica de encaminhamento de porta é aplicada ou não e se o aplicativo em contêiner está acessível fora do contêiner no sistema host:

Aqui, encaminhamos com sucesso a porta do host para a porta do contêiner e o aplicativo está acessível no host do docker.

Como encaminhar porta no Docker usando Docker Compose

Para encaminhar a porta do contêiner ao host para acessar o aplicativo em contêiner de fora do contêiner, o usuário pode utilizar o “ porta ” no arquivo yaml de composição. Docker compose é um serviço Docker que nos permite executar diferentes serviços e aplicativos em diferentes contêineres. Usando o “ docker-compose.yml ”, o usuário também pode encaminhar a porta do contêiner para a máquina host e ter uma conexão do aplicativo com o mundo externo.

Confira o procedimento abaixo para ilustrações.

Etapa 1: criar arquivo de composição

Primeiro, gere um arquivo chamado “ docker-compose.yml ” e adicione o seguinte conteúdo ao arquivo:

versão: '3'

Serviços:

rede:

construir: .

portos:

- 8080 : 8080

No trecho acima, o “ portos ”A chave é usada para conectar o host à porta do contêiner. Aqui, o primeiro valor é a porta do host e o segundo valor é a porta do contêiner.

Etapa 2: iniciar o aplicativo

Após especificar as instruções no arquivo de composição, inicie o aplicativo em um contêiner usando o “ docker-compose up ”comando:

docker-compose up

Etapa 3: verificação

Para verificação, liste os contêineres de composição usando o “ docker-compose ps ”comando:

docker-compose obs: -a

Para verificar se o contêiner está acessível na máquina host, navegue até “ http://localhost:8080/ ”URL. Aqui, você pode ver que encaminhamos efetivamente a porta do contêiner no host:

Como encaminhar porta para rede específica

Para encaminhar uma porta de contêiner para uma rede específica, o usuário precisa especificar a rede na qual deseja acessar o contêiner usando o botão “ -rede ”Opção. Veja as etapas fornecidas para demonstração.

Etapa 1: crie uma rede

Crie uma nova rede usando o “ criação de rede docker ” comando. Por padrão, esta rede usará um driver bridge:

rede docker criar rede mygo

Para visualizar as redes Docker, utilize o “ rede docker ls ”comando:

rede docker eu

Aqui, criamos com sucesso “ rede mygo ”que está usando“ ponte ' motorista:

Etapa 2: Mapear Rede

Para executar e acessar o contêiner na rede específica usando a técnica de encaminhamento de porta, use o comando abaixo:

execução do docker -p 8080 : 8080 --rede mygo-rede golang-img

No comando fornecido, o “ -p ”Publica o contêiner em uma porta especificada da rede especificada. Aqui o ' -rede ”A opção é usada para definir a rede docker:

Para verificação, navegue novamente até “ http://localhost:8080 ”porta e verifique se o contêiner está acessível na rede especificada ou não:

A saída acima indica que encaminhamos efetivamente a porta do contêiner em uma rede específica.

Observação: Ao usar a rede “host”, o usuário não precisa publicar a porta do contêiner para o host usando o “ -p ' ou ' -publicar ”Opção.

Encaminhar porta para rede específica usando Docker Compose

Adicione o seguinte trecho em “ docker-compose.yml ' arquivo. No trecho abaixo, o “ redes ”A chave é usada para especificar a rede:

versão: '3'
Serviços:

rede:
construir: .
portos:
- 8080 : 8080

Agora, inicie o aplicativo em um contêiner usando o “ docker-compose up ”comando:

docker-compose up

Abordamos os métodos de encaminhamento de porta no Docker.

Conclusão

Para encaminhar a porta no Docker para acessar o aplicativo dockerize fora do contêiner, o usuário pode usar o “ -p ' ou ' -publicar ”Opção no“ execução do docker ”Ou o usuário pode usar o“ portos ”Chave no arquivo de composição do Docker. Para acessar o contêiner em uma rede específica, o usuário pode encaminhar a porta do contêiner em uma rede usando o botão “ –rede ”Opção. Este blog demonstrou as técnicas para encaminhar portas no Docker.