I denne artikkelen vil jeg vise deg hvordan du utsetter porter ved hjelp av Dockerfile med et ekte verdenseksempel. La oss komme i gang.
Først må vi lage en prosjektkatalog. I denne katalogen bør du oppbevare alle prosjektfilene og en Dockerfile.
Kjør følgende kommando for å opprette en prosjektkatalog myapp/ I dine brukere hjemmekatalog og navigerer til den:
$ mkdir ~/myapp && cd ~/myapp
Å gjøre webappen klar:
Lag nå en katalog src/ inne i ~/myapp/ Katalog med følgende kommando:
$ MKDIR SRC
I src/ Katalog, all kildekoden til NodeJS -applikasjonen min vil bli holdt.
Jeg vil bare lage en enkel app.JS fil i src/ Katalog og kjør en enkel webserver på port 8080 Bare for demonstrasjon.
De SRC/APP.JS Filen inneholder følgende linjer med koder:
Skrive Dockerfile og utsette porter:
Nå opprette en Dockerfile i ~/myapp Katalog med følgende kommando:
$ Touch Dockerfile
Skriv nå inn følgende linjer til Dockerfile og lagre det. Jeg vil diskutere hva disse linjene betyr senere.
Her, Fra Alpine: 3.8 betyr, bruk Alpine: 3.8 Docker -bildet som base for det nye bildet som vi skal bygge fra dette Dockerfile.
Kjør APK -oppdatering betyr, kjør APK -oppdatering Kommando i Base Docker -bildet Alpine: 3.8.
Kjør apk add -no -cache nodejs betyr, kjør APK Legg til kommando for å installere NodeJS -programmeringsspråket i Alpine: 3.8 Docker Base Image.
KOPIERE ./src /app betyr, kopier alle filene fra ~/myapp/src katalog til /app Katalog for det nye Docker -bildet som vi skal bygge ved hjelp av Dockerfile.
Cmd [“/usr/bin/node”, “/app/app.JS ”] betyr, kjør /app/app.JS fil fra den nye beholderen ved hjelp av Node binær lokalisert i /usr/bin/node.
Til slutt, til Utsett 8080/tcp betyr, utsett eller åpne TCP -porten 8080 til vertsdatamaskinen.
Opprette tilpasset Docker -bilde ved hjelp av DockerFile:
La oss nå lage et tilpasset Docker -bilde Alpine-node: v1 bruker Dockerfile at vi nettopp opprettet.
Forsikre deg først om at du er i ~/myapp/ Katalog og kjør deretter følgende kommando for å opprette ditt tilpassede Docker -bilde Alpine-node: v1:
$ docker build -t alpine -node: v1 .
Som du ser, det tilpassede docker -bildet Alpine-node: v1 opprettes. Det nødvendige base Docker -bildet og pakker trekkes fra Internett.
Som du ser, det tilpassede docker -bildet Alpine-node: v1 opprettes vellykket.
Testing av det tilpassede Docker -bildet:
Nå kan vi teste det tilpassede Docker -bildet Alpine-node: v1 veldig lett. Alt vi trenger å gjøre er å lage en beholder ut av Alpine-node: v1 bilde.
Kjør følgende kommando for å opprette en Docker -beholder www fra Alpine-node: v1 Docker -bilde:
$ Docker Run -D -It -Navn www Alpine -Node: V1
Beholderen www er skapt.
La oss nå finne ut IP -adressen til www Docker Container med følgende kommando:
$ docker inspiser www | grep adresse
Som du kan se, i mitt tilfelle, er IP -adressen 172.17.0.3. Så NodeJS -applikasjonen som jeg skrev, skal være tilgjengelig fra nettleseren i Port 8080 av denne IP -adressen.
Voila! Jeg har tilgang til porten 8080 av min www Docker Container.
Det er i utgangspunktet slik du utsetter visse porter i dine tilpassede Docker -bilder du skal bygge ved hjelp av Dockerfile.
Å utsette TCP- og UDP -porter ved hjelp av Dockerfile:
I den tidligere delen av denne artikkelen viste jeg deg hvordan du kan eksponere en TCP -port ved hjelp av en Dockerfile.
Du kan enkelt eksponere en TCP -port (la oss si TCP -port 53) i din Dockerfile med følgende linje:
Utsett 53/tcp
Du kan også avsløre en UDP -port (la oss si UDP -port 53) med følgende linje i din Dockerfile:
Utsett 53/udp
Du kan eksponere TCP- og UDP -port samtidig med følgende linjer i din Dockerfile:
Utsett 53/tcp
Utsett 53/udp
Hvis du ikke spesifiserer hvilken protokoll (TCP eller UDP) som skal brukes, brukes TCP som standard. For eksempel, hvis du skriver følgende linje i din Dockerfile:
Utsett 53
Da vil Docker anta at du vil bruke TCP -porten 53.
Å utsette flere porter ved hjelp av DockerFile:
La oss si at du vil lage et tilpasset gjennomsnittlig stack Docker -bilde. I dette tilfellet kjører du en HTTP -server på en eller annen port (la oss si TCP -port 80 eller 8080), en FTP -server som kjører på TCP Port 21, en SQL -databaseserver (la oss si MySQL) som kjører på TCP Port 3306, eller NOSQL -databaseserver (la oss si MongoDB) som kjører på TCP -port 27017 eller 27018, en SSH -server som kjører på TCP -port 22. Det er mange havner!
Den gode nyheten er; Du kan eksponere så mange porter som behov på det tilpassede Docker -bildet ditt som er opprettet ved hjelp av Dockerfile.
Portene i eksemplet over kan bli utsatt med følgende linjer i din Dockerfile:
Eksponer 80/TCP
Utsett 8080/tcp
Utsett 21/tcp
Utsett 22/tcp
Utsett 3306/tcp
Utsett 27017/tcp
Utsett 27018/tcp
Hvis du vil, kan du forlate protokollspesifikasjonen da Docker bruker TCP som standard og gjør det samme med følgende linjer i din Dockerfile:
Utsett 80
Utsett 8080
Utsett 21
Utsett 22
Utsett 3306
Eksponer 27017
Utsett 27018
Hvis du trenger det, kan du blande TCP- og UDP -porter i din Dockerfile. Hvis du for eksempel kjører DNS -server (som kjører på UDP Port 53), sammen med eksemplet ovenfor, vil du legge til følgende linjer til din Dockerfile.
Utsett 80
Utsett 8080
Utsett 21
Utsett 22
Utsett 53/udp
Utsett 3306
Eksponer 27017
Utsett 27018
Så det er slik du utsetter porter ved hjelp av Dockerfile. Å lære mer om Dockerfile og utsette porter ved hjelp av Dockerfile, Les Dockerfile Referansehåndbok ved https: // dokumenter.Docker.com/motor/referanse/byggherre/#eksponering
Takk for at du leste denne artikkelen.