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”
- Como encaminhar porta no Docker usando Docker Compose
- Como encaminhar porta para uma rede específica
- Conclusão
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
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
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
Para visualizar as redes Docker, utilize o “ rede docker ls ”comando:
rede docker euAqui, 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-imgNo 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