
Estou executando o Ubuntu 22.04.3 LTS em uma máquina virtual. Instalei o Nginx com porta 80.
Ao acessar http://localhost:80, o site normal é exibido pelo Nginx.
Em seguida, instalei o docker e duas imagens. Dei acesso à API da imagem na porta 9000.
Porém ao acessar http://localhost:9000, é exibido um erro. Acessar no carteiro retorna 404.
Parece que preciso vincular ou permitir a porta 9000 no Nginx ou vincular o acesso do docker à porta.
Não consegui descobrir como permitir mais portas no Nginx ou como vincular o contêiner exposto na porta 9000. É assim que aparece para a imagem na janela de encaixe:
0.0.0.0:9000->9000/tcp, :::9000->9000/tcp
Executei as etapas para o servidor:
cd /etc/nginx/sites-enabled
sudo "${EDITOR:-vi}" docker
server {
listen 80;
listen [::]:80;
server_name example.ubuntu.com;
root /var/www/docker;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
Se eu executar GET no postman: http://localhost:9000/kalum-management/v1/jornadas ele deverá retornar dados. Por algum motivo, a confusão com Docker e Nginx se confundiu e não tenho certeza de como expor o docker à porta 9000.
Responder1
Docker cria sua própria rede e adaptador de rede. Ao executar os contêineres, você pode usar a opção network_mode host para poder conectar-se do sistema operacional host à rede docker à qual o contêiner está vinculado. Eu recomendaria usar o docker compose e também mostrarei um exemplo do docker-compose para publicar mais portas
version: '3'
services:
your_service_name:
container_name: your_container_name
image: your_image_name
network_mode: host
volumes:
- /path/on/host:/mnt
Tenha em mente que você não pode usar as portas públicas e o host do modo de rede juntos.
Salve este arquivo em um diretório como docker-compose.yml e execute-o comdocker-compose up -d
opção 2
Ou você descobre o endereço IP do contêiner usando o seguinte comando
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name_or_id>
E então, em vez de http://localhost:9000, você substitui localhost pelo ip do contêiner. Pode não funcionar porque a rede docker (criada automaticamente ao iniciar o contêiner) não pode ser acessada pelo host (corrija-me se estiver errado, mas por padrão não há roteamento entre a rede principal do sistema operacional host e o docker rede onde o contêiner está vinculado)