Docker
  • Introdução a Containeres e Docker
    • Introdução
    • O que é um container e suas vantanges
    • VM versus Container
    • Como funcionam os containers
    • Linux
    • Container sem Docker
      • cgroup
      • cpu.max
    • LxC
    • LxD
    • Containers versus Imagens
    • Arquitetura do Docker
    • Arquitetura do Docker mais a fundo
    • Projetos Open Source
  • Instalação do Docker
    • Linux
    • Windows
      • Docker Desktop
      • Rancher Desktop
      • WSL
    • Mac
    • Visual Studio Code
  • Primeiros Passos com Docker
    • Criação e listagem básica de um container
    • Interagindo com o container
    • Executando containers continuamente
      • nginx
      • docker container run
      • docker container run nginx
      • docker container run -d nginx
      • docker container exec
    • Como usar publish de porta
      • docker container stop
      • docker container start
      • docker container rm
      • docker container rm -f $(docker container ls -qa)
    • Containers e variáveis de ambiente
      • docker container run -e
  • Desafio
    • Desafio 01 - Banco de Dados Postgresql
    • Desafio 02 - Banco de Dados MySQL
    • Desafio 03 - Banco de Dados MongoDB
  • Executando a sua primeira aplicação em containers
    • Introdução
    • Preparando o container para a aplicação
    • Executando a aplicação
      • docker container cp
  • Primeiros Passos com Docker Images
    • Introdução
    • OverlayFS na Prática
    • Copy-on-Write
    • Formas de criar uma imagem Docker
    • Como funciona o Docker Commit
    • Docker Commit na Prática
      • docker commit
    • Entendendo melhor a sua imagem
      • docker image history
      • docker image inspect
    • Entrando mais a fundo na imagem
    • Como usar a imagem Docker no modo raiz
  • Avançando em imagens Docker com Dockerfile
    • O que é Dockerfile
    • Primeira Imagem com Dockerfile
      • docker image build
    • Como funciona a construção com Dockerfile
    • Possibilidades com Dockerfile
    • FROM
    • RUN
    • WORKDIR
    • COPY
    • ADD
    • LABEL
    • ENV
    • VOLUME
    • ARG
    • EXPOSE
    • USER
    • ENTRYPOINT
    • CMD
    • ENTRYPOINT versus CMD
    • Principais comandos com imagem
    • Imagem da aplicação com Dockerfile
    • Comparando Docker Commit com Dockerfile
  • Docker Registry
    • Introdução
    • Docker Hub
    • Sua imagem com o nome certo
    • Renomear imagens com Docker Tag
      • docker image tag
    • Enviando a sua primeira imagem para o Docker Hub
      • docker image push
      • docker image pull
  • Algumas boas práticas para construção de imagem
    • Um processo por container
    • Usar imagens confiáveis
    • Otimizar sempre a sua imagem
    • Uso inteligente das camadas
    • Dockerignore
  • Multistage Build
    • Introdução
    • Multistage build na prática
    • Target para fazer o build
      • docker image build --target
    • Imagem externa no Multistage build
    • Usar um estágio de build como base
  • Docker Volume
    • Introdução
      • docker volume
    • Bind Mount
    • Particularidades do Bind Mount
    • Bind Mount no Windows
    • Exemplo com Bind Mount
    • Docker Volume
      • docker volume create
      • docker volume inspect
      • docker volume ls
      • docker volume prune
      • docker volume rm
    • Onde ficam os arquivos do Docker volume?
    • Usando o volume no Dockerfile
    • Como fazer backup de um Docker Volume
    • Exemplo com Docker Volume
    • Storage tmpfs
    • Como criar algo funcional com o que aprendemos
  • Network
    • Introdução
    • Componentes do Docker Network
    • Rede Bridge na prática
      • docker network
      • docker network create
      • docker network inspect
      • docker network ls
      • docker network prune
      • docker network rm
    • Criando a sua rede bridge
      • docker network connect
      • docker network disconnect
    • Como funciona a rede bridge por dentro
    • Rede Host na prática
    • Rede none da prática
    • Como adicionar domínios no seu container
  • Aplicação 100% no Docker
    • Introdução
    • Criação da Imagem e Envio para o Docker Hub
    • Criação do Docker Network
    • Container do PostgreSQL
    • Container da Aplicação Web
    • Atualização da aplicação
  • Docker Compose
    • Introdução
      • docker compose
    • A evolução do docker compose
    • Criação básica de um Docker Compose
      • docker compose attach
      • docker compose build
      • docker compose config
      • docker compose cp
      • docker compose create
      • docker compose down
      • docker compose events
      • docker compose exec
      • docker compose images
      • docker compose kill
      • docker compose logs
      • docker compose ls
      • docker compose pause
      • docker compose port
      • docker compose ps
      • docker compose pull
      • docker compose push
      • docker compose restart
      • docker compose rm
      • docker compose run
      • docker compose scale
      • docker compose start
      • docker compose stats
      • docker compose stop
      • docker compose top
      • docker compose unpause
      • docker compose up
      • docker compose version
      • docker compose wait
      • docker compose watch
    • Variáveis de Ambiente
    • Volume Bind Mount
    • Docker Volume
    • Docker Network - Bridge
    • Docker Network - Host Driver e Add Host
    • Ordenando a execução dos containers
    • Compose com build de imagem
    • Como Parametrizar o Compose com Variáveis de Ambiente
    • Múltiplos Composes
    • Extends
    • Merge
    • Include
    • Profiles
    • Comandos importantes do Docker Compose
  • Troubleshooting
    • Introdução
    • Docker Info
    • Docker Events
    • Docker Logs
    • Docker Inspect
    • Docker Top
    • Docker Stats
    • Docker Exec
  • Resiliência e Gerenciamento de Recursos
    • Introdução
    • Docker Restart
      • Introdução
      • on-failure
      • unless-stopped
      • always
      • Docker Compose
    • Healthcheck
      • Introdução
      • Linha de Comando
      • Docker Compose
      • Direto na Imagem
    • Gerenciamento de Recurso
      • CPU
        • Como Gerenciar CPU
        • Prática
      • Memória
        • Como Gerenciar Memória
        • Prática
      • Docker Compose
  • Fazendo um ambiente mais seguro
    • Introdução
    • Docker Scout
      • Introdução
      • Verificação Simples de Imagem
      • Como adicionar um repositório
      • Primeira melhoria na imagem
  • BUSCA RÁPIDA
    • Referências
    • Comandos
      • docker commit
      • docker compose
      • docker container
      • docker image
      • docker network
      • docker volume
    • Dockerfile
Powered by GitBook
On this page
  1. Primeiros Passos com Docker

Como usar publish de porta

Previousdocker container execNextdocker container stop

Last updated 9 months ago

Em Docker, a publicação de portas permite quebrar um pouco do isolamento de rede, criando uma regra de redirecionamento. Por exemplo, você pode indicar que as solicitações na porta 8080 do seu host devem ser encaminhadas para a porta 80 do contêiner. Isso é feito durante a criação do contêiner usando a opção -p (ou --publish) com o comando docker run. A sintaxe é a seguinte:

docker run -d -p PORTA_HOST:PORTA_CONTÊINER nginx
  • PORTA_HOST: O número da porta no seu host onde você deseja receber tráfego.

  • PORTA_CONTÊINER: O número da porta dentro do contêiner que está aguardando conexões.

Por exemplo, para publicar a porta 80 do contêiner na porta 8080 do host:

docker run -d -p 8080:80 nginx

Agora, qualquer tráfego enviado para a porta 8080 do seu host será encaminhado para a porta 80 dentro do contêiner.

Lembre-se de que, por padrão, quando uma porta é publicada, ela fica disponível em todas as interfaces de rede, o que significa que qualquer tráfego que alcance sua máquina pode acessar a aplicação publicada. Portanto, tenha cuidado ao publicar bancos de dados ou informações sensíveis.

Se você não se importa com qual porta do host é usada, pode deixar o Docker escolher uma porta efêmera para você. Basta omitir a configuração da porta do host:

docker run -p 80 nginx

Uma vez que o contêiner está em execução, você pode verificar a porta escolhida usando docker ps.

Além disso, ao criar uma imagem de contêiner, a instrução EXPOSE indica que a aplicação empacotada usará a porta especificada. Essas portas não são publicadas por padrão.

Com a opção -P ou --publish-all, você pode publicar automaticamente todas as portas expostas para portas efêmeras, o que é útil para evitar conflitos de porta em ambientes de desenvolvimento ou teste.

$ docker container run -d -p 8080:80 nginx
067a2bef8dc7be39db7e5b3551ca638be66954594dc7ff9c9df76f63116cfcff

$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                   NAMES
067a2bef8dc7   nginx     "/docker-entrypoint.…"   4 seconds ago    Up 4 seconds    0.0.0.0:8080->80/tcp, :::8080->80/tcp   ecstatic_cori

Parar a execução do container:

$ docker container stop 067a2bef8dc7   
067a2bef8dc7   
$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS  

Voltar a executar o container:

$ docker container start 067a2bef8dc7   
067a2bef8dc7   
$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                   NAMES
067a2bef8dc7   nginx     "/docker-entrypoint.…"   4 seconds ago    Up 4 seconds    0.0.0.0:8080->80/tcp, :::8080->80/tcp   ecstatic_cori

Remover o container:

$ docker container rm 067a2bef8dc7   
Error response from daemon: cannot remove container "/awesome_jones": container is running: stop the container before removing or force remove

Não é possível remover o container que está em execução. Faz-se necessário:

  1. para-lo antes, ou

  2. forçar a remoção.

Parar o container e remove-lo:

$ docker container stop 067a2bef8dc7   
067a2bef8dc7   
$ docker container rm 067a2bef8dc7   
067a2bef8dc7   
$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS

Forçar a remoção:

$ docker container rm -f 067a2bef8dc7   
067a2bef8dc7   
$ docker container ls
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS

Remoção de vários containeres ao mesmo tempo:

# Lista o ID dos containeres e remove:
$ docker container rm -f $(docker container ls -qa)  
$ docker container ls -a
CONTAINER ID   IMAGE     COMMAND                  CREATED        STATUS                        PORTS
               NAMES
067a2bef8dc7   nginx     "/docker-entrypoint.…"   47 hours ago   Exited (255) 20 minutes ago   0.0.0.0:8080->80/tcp, :::8080->80/tcp   ecstatic_cori
3a6870fc609d   nginx     "/docker-entrypoint.…"   47 hours ago   Exited (255) 20 minutes ago   80/tcp
               naughty_benz
e28e0d37acde   nginx     "/docker-entrypoint.…"   47 hours ago   Exited (127) 47 hours ago
               festive_mestorf
0f4ea8129b29   nginx     "/docker-entrypoint.…"   2 days ago     Exited (0) 2 days ago
               clever_volhard
               
$ docker container rm -f $(docker container ls -qa)
067a2bef8dc7
3a6870fc609d
e28e0d37acde
0f4ea8129b29

$ docker container ls -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
Publishing and exposing portsDocker Documentation
Logo