Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    142

    Accedere a localhost dall'interno di Docker

    codice:
    + curl localhost
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    bla bla bla...
    Tutto ok, ma adesso proviamo dall'interno di un contenitore docker

    codice:
    + cat Dockerfile
    FROM php:7.2.2-cli
    
    + cat test.sh
    #!/bin/bash -e
    cd $(dirname "$0")
    
    docker build --network host -t test-image .
    docker run test-image curl localhost
    + ./test.sh
    Sending build context to Docker daemon 4.096 kB
    Step 1/1 : FROM php:7.2.2-cli
     ---> 21c3582549e6
    Successfully built 21c3582549e6
      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                     Dload  Upload   Total   Spent    Left  Speed
      0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
    curl: (7) Failed to connect to localhost port 80: Connection refused
    Perchè non funziona?

  2. #2
    Non funziona perchè docker implementa un namespace anche per le interfacce di networking, cioè il container al suo interno ha una sua rete isolata da quella dell'host. E ovviamente nel container non hai un server http in ascolto sulla porta 80, per cui ti dice connection refused.

    Devi usare l'opzione host per il networking https://docs.docker.com/network/host/

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    142
    Quote Originariamente inviata da paolino_delta_t Visualizza il messaggio
    Non funziona perchè docker implementa un namespace anche per le interfacce di networking, cioè il container al suo interno ha una sua rete isolata da quella dell'host. E ovviamente nel container non hai un server http in ascolto sulla porta 80, per cui ti dice connection refused.

    Devi usare l'opzione host per il networking https://docs.docker.com/network/host/
    In pratica dovrei usare l'opzione --network host ?
    E' quello che ho fatto.
    Purtroppo uso docker da poco, perdona l'ignoranza.

  4. #4
    Quote Originariamente inviata da astros3 Visualizza il messaggio
    In pratica dovrei usare l'opzione --network host ?
    E' quello che ho fatto.
    Purtroppo uso docker da poco, perdona l'ignoranza.
    Si, come specificato nella documentazione.

    Questo vale su Linux. Su Windows e macOS, Docker all'interno di una macchina virtuale e quindi non è in grado di comunicare direttamente con l'host ( a meno che la VM non lo preveda ).

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    142
    Quote Originariamente inviata da paolino_delta_t Visualizza il messaggio
    Si, come specificato nella documentazione.

    Questo vale su Linux.
    Infatti io uso linux (ubuntu)
    Su Windows e macOS, Docker all'interno di una macchina virtuale e quindi non è in grado di comunicare direttamente con l'host ( a meno che la VM non lo preveda ).
    Non uso ne win, ne mac, quindi non vado ad approfondire

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.