No Docker, a instrução EXPOSE presente no Dockerfile é frequ...

Próximas questões
Com base no mesmo assunto
Q4035440 Noções de Informática
No Docker, a instrução EXPOSE presente no Dockerfile é frequentemente mal interpretada por profissionais de TI. Com isso, considere um Dockerfile que contém a instrução EXPOSE 8080. Após a construção da imagem e a execução do container sem parâmetros adicionais, a aplicação não está acessível a partir de outros hosts da rede. Diante disso, assinale a alternativa que apresenta a explicação CORRETA para esse comportamento.
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: D

Fundamento decisivo: O ponto decisivo é que o container foi executado sem parâmetros adicionais, então a porta 8080 foi apenas declarada por EXPOSE, mas não publicada no host; por isso a aplicação não ficou acessível a outros hosts.

Tema central: EXPOSE versus publish
Análise das alternativas
A
Errada
Está errada por dois motivos concretos: afirma publicação automática no host, o que EXPOSE não faz, e ainda troca a porta 8080 por 80, sem qualquer suporte no Dockerfile indicado.
B
Errada
Está errada porque atribui ao EXPOSE uma função que ele não tem: configurar firewall do sistema hospedeiro. Pela base, EXPOSE atua como declaração/documentação da porta usada pela aplicação na imagem, não como regra de firewall nem como configuração de roteador.
C
Errada
Está errada porque inventa um mapeamento automático da porta 8080 do container para a mesma porta do host e ainda condiciona isso ao modo interativo. Pela base, mapeamento exige publicação explícita com -p ou publicação das portas expostas com -P, e o modo interativo é irrelevante.
D
Certa
A alternativa D está correta porque distingue a função da instrução EXPOSE da etapa de publicação de portas. EXPOSE 8080 registra na imagem que a aplicação usa essa porta em tempo de execução, mas isso não cria mapeamento host:container. Para que outros hosts acessem a aplicação por meio do host, é necessário publicar a porta na execução do container, tipicamente com docker run -p.
E
Errada
Está errada porque relaciona EXPOSE com criptografia, TLS e certificados, temas que não pertencem à função dessa instrução. EXPOSE trata de porta de escuta, não de comunicação criptografada.
Pegadinha da questão
A confusão explorada é tratar EXPOSE como se ele publicasse a porta no host, quando ele apenas declara/documenta a porta usada pelo container.
Dica para questões semelhantes
  • Se a questão falar em acessibilidade externa ao container, verifique se houve publicação de porta no docker run; EXPOSE sozinho não basta.
  • Separe sempre o que pertence à imagem do que pertence à execução: EXPOSE é metadado da imagem, enquanto -p cria o mapeamento host:container.
  • Não atribua ao EXPOSE efeitos de firewall, roteador, TLS ou modo interativo, porque esses efeitos não decorrem dessa instrução.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo