Il port forwarding in Docker è un processo che ci consente di esporre la porta del contenitore sul sistema host Docker. Ci consente di eseguire l'applicazione in un ambiente isolato e di renderla accessibile anche dall'esterno del contenitore su una macchina utente.
Questo post dimostrerà:
- Come inoltrare la porta in Docker utilizzando il tag '-p' o '-publish'.
- Come inoltrare la porta in Docker utilizzando Docker Compose
- Come inoltrare una porta a una rete specifica
- Conclusione
Come inoltrare la porta in Docker utilizzando il tag '-p' o '-publish'.
Per inoltrare una porta in Docker, l'utente deve pubblicare la porta del contenitore sull'host Docker. A questo scopo, esegui il contenitore sull'host docker utilizzando il comando ' -P ' O ' -pubblicare ' nel tag ' esecuzione della finestra mobile 'comando.
Per una corretta dimostrazione, seguire le istruzioni seguenti.
Passaggio 1: crea Dockerfile
Innanzitutto, crea un file e imposta il suo nome come ' Dockerfile ”. Questo file contiene le istruzioni testuali per creare il template del contenitore Docker. Ad esempio, dockerizziamo il semplice programma Golang utilizzando lo snippet seguente nel Dockerfile:
DA Golang: 1.8
DIR.LAVORO / andare / src / app
COPIA main2.go .
CORRI, vai a costruire -O server web .
ESPORRE 8080
CMD [ './server web' ]
Nello snippet indicato:
- “ DA Il comando viene utilizzato per impostare l'immagine di base.
- “ DIR.LAVORO ' definisce la directory di lavoro del contenitore.
- “ COPIA Il comando creerà una copia del file di programma nel percorso specificato dal contenitore.
- “ CORRERE 'Il comando eseguirà il comando specificato nel contenitore.
- “ ESPORRE Il comando specifica la porta su cui verrà ascoltato il contenitore.
- “ CMD ' specifica i punti eseguibili del contenitore.
Passaggio 2: crea un programma Golang
Successivamente, crea un altro file denominato ' main2.go ' e incolla il programma Golang fornito di seguito che stampa una semplice stringa sulla porta ' 8080 ':
pacchetto principale
importare (
'fmt'
'tronco d'albero'
'rete/http'
)
gestore della funzione ( In http.ResponseWriter, r * http.Richiesta ) {
html := `
DOCTYPEhtml >
< html >
< Testa >
< titolo > Ciao Golang ! titolo >
< stile >
corpo {
colore di sfondo: #D2B48C;
}
.contenitore {
allineamento testo: centro;
imbottitura: 50px;
}
stile >
Testa >
< corpo >
< div classe = 'contenitore' >
< h1 > Ciao ! Benvenuti nel tutorial LinuxHint h1 >
div >
corpo >
html >`
w.Intestazione ( ) .Impostato ( 'Tipo di contenuto' , 'testo/html' )
fmt.Fprint ( In ,HTML )
}
funzione principale ( ) {
http.HandleFunc ( '/' , gestore )
log.Fatal ( http.ListenAndServe ( '0.0.0.0:8080' , zero ) )
}
Passaggio 3: genera l'istantanea del contenitore
Ora genera uno snapshot per il contenitore dal Dockerfile specificato sopra. A questo scopo, innanzitutto, accedere alla directory in cui viene creato il Dockerfile utilizzando il comando ' cd
Successivamente, genera la nuova immagine del contenitore utilizzando il comando indicato:
compilazione della finestra mobile -T Golang-img.
Il risultato fornito mostra che l'immagine viene creata in base al contesto di compilazione fornito.
Passaggio 4: inoltrare la porta host alla porta container
Ora esegui il contenitore e inoltra la porta host alla porta del contenitore per accedere all'app dockerize all'esterno del contenitore su un computer locale. A questo scopo, eseguire il file 'docker run –name
Ecco, il “ -P Il flag ' viene utilizzato per pubblicare la porta di esecuzione del contenitore sull'host docker:
Passaggio 5: verifica
Per verifica, visualizza i contenitori in esecuzione utilizzando ' finestra mobile ps ':
finestra mobile p.sNel risultato seguente, l'applicazione containerizzata è in ascolto sulle interfacce di rete disponibili ' 0.0.0.0 'sulla porta pubblicata' 8080 ”. Implica che la porta venga inoltrata all'applicazione in esecuzione sulla macchina host:
Ora avvia il browser e vai su “ http://localhost:8080/ ” e verificare se la tecnica del port forwarding è applicata o meno e se l'applicazione containerizzata è accessibile all'esterno del container sul sistema host:
Qui abbiamo inoltrato con successo la porta dell'host alla porta del container e l'applicazione è accessibile sull'host docker.
Come inoltrare la porta in Docker utilizzando Docker Compose
Per inoltrare la porta del contenitore all'host per accedere all'applicazione containerizzata dall'esterno del contenitore, l'utente può utilizzare il comando ' porta ' nel file yaml di composizione. Docker compose è un servizio Docker che ci consente di eseguire diversi servizi e applicazioni in diversi contenitori. Usando il ' docker-compose.yml ', l'utente può anche inoltrare la porta del container al computer host e avere una connessione dell'applicazione con il mondo esterno.
Controlla la procedura seguente per le illustrazioni.
Passaggio 1: crea il file di composizione
Innanzitutto, genera un file denominato ' docker-compose.yml ' e aggiungi il seguente contenuto al file:
versione: '3'Servizi:
ragnatela:
costruire: .
porti:
- 8080 : 8080
Nello snippet sopra, il ' porti La chiave ' viene utilizzata per connettere l'host alla porta del container. In questo caso, il primo valore è la porta host e il secondo valore è la porta del container.
Passaggio 2: avvia l'app
Dopo aver specificato le istruzioni nel file di composizione, avviare l'applicazione in un contenitore utilizzando il pulsante ' docker-componi 'comando:
docker-componi
Passaggio 3: verifica
Per verifica, elenca i contenitori di composizione utilizzando il pulsante ' docker-compose ps 'comando:
docker-compose p.s -UN
Per verificare se il contenitore è accessibile sul computer host, vai alla sezione ' http://localhost:8080/ ' URL. Qui puoi vedere che abbiamo effettivamente inoltrato la porta del container sull'host:
Come inoltrare una porta a una rete specifica
Per inoltrare una porta del container a una rete specifica, l'utente deve specificare la rete su cui desidera accedere al container utilizzando il comando ' -rete ' opzione. Guarda i passaggi indicati per la dimostrazione.
Passaggio 1: crea una rete
Crea una nuova rete utilizzando il comando ' creazione della rete docker
Per visualizzare le reti Docker, utilizzare il pulsante ' rete docker ls 'comando:
rete docker lsQui, abbiamo creato con successo “ mygo-rete ' cioè usare ' ponte ' autista:
Passaggio 2: mappare la rete
Per eseguire e accedere al contenitore sulla rete specifica utilizzando la tecnica del port forwarding, utilizzare il comando seguente:
esecuzione della finestra mobile -P 8080 : 8080 --rete mygo-network golang-imgNel comando dato, il ' -P L'opzione 'pubblica il contenitore su una porta specificata della rete specificata. Ecco, il “ -rete L'opzione ' viene utilizzata per definire la rete docker:
Per la verifica, vai nuovamente alla sezione ' http://localhost:8080 ' porta e controlla se il contenitore è accessibile sulla rete specificata o meno:
L'output di cui sopra indica che abbiamo effettivamente inoltrato il porto del container su una rete specifica.
Nota: Durante l'utilizzo della rete 'host', l'utente non ha bisogno di pubblicare la porta dal contenitore all'host utilizzando il metodo ' -P ' O ' -pubblicare ' opzione.
Inoltra la porta a una rete specifica utilizzando Docker Compose
Aggiungi il seguente snippet nel campo ' docker-compose.yml ' file. Nel frammento di seguito, il ' reti La chiave ' viene utilizzata per specificare la rete:
versione: '3'Servizi:
ragnatela:
costruire: .
porti:
- 8080 : 8080
Ora avvia l'applicazione in un contenitore utilizzando il pulsante ' docker-componi 'comando:
docker-componi
Abbiamo trattato i metodi per il port forwarding in Docker.
Conclusione
Per inoltrare la porta in Docker per accedere all'applicazione dockerize all'esterno del contenitore, l'utente può utilizzare il comando ' -P ' O ' -pubblicare 'opzione' nel ' esecuzione della finestra mobile ' oppure l'utente può utilizzare il comando ' porti ' nel file di composizione Docker. Per accedere al contenitore su una rete specifica, l'utente può inoltrare la porta del contenitore su una rete utilizzando il comando ' –rete