VMWare Ubuntu - Como acessar um contêiner docker no Ubuntu enquanto executa o nginx

VMWare Ubuntu - Como acessar um contêiner docker no Ubuntu enquanto executa o nginx

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)

informação relacionada