Containerpoorten zijn specifieke netwerkpoorten die gebonden kunnen worden aan specifieke diensten of toepassingen binnen een container.
Elke container kan zijn eigen poorten hebben die gebruikt kunnen worden om te communiceren met de buitenwereld of om te communiceren met andere containers. Bij het starten van een container kun je aangeven welke poorten beschikbaar moeten zijn in de container en welke poorten moeten worden doorgestuurd naar de hostmachine.
ports:
external_port:Internal port
Laten we bijvoorbeeld poort 80 doorsturen als 8094:
docker-nginx:
image: nginx
ports:
- '8094:80'
Wanneer de container draait, kan de applicatie in de container luisteren of gegevens verzenden via de juiste poort. Gebruikers kunnen communiceren met de applicatie door toegang te krijgen tot de containerpoort die is doorgestuurd naar de hostmachine.
Om containerpoorten te starten, moet je het docker run
commando gebruiken met de -p
of --publish
vlag.
De syntaxis voor het docker run commando met de -p
vlag is als volgt:
docker run -p <host port>:<container port> <image_name>
Waarbij:
<host-port> is de poort op je host die zal worden geproxied naar de containerpoort.
<container-port> - de poort binnen de container die zal worden benaderd via de gespecificeerde host-poort.
<image_name> - de naam van de container image die je wilt draaien.
Om bijvoorbeeld een container te starten met een webserver op poort 80 en deze te proxy'en naar poort 8080 van je host, kun je het volgende commando gebruiken:
docker run -p 8080:80 nginx
De webserver die in de container draait, zal nu toegankelijk zijn op poort 8080 van je host.
Je kunt ook een poortbereik gebruiken door meerdere paren <host-poort>:<container-poort> op te geven.
Bijvoorbeeld:
docker run -p 8080-8082:80-82 nginx
Dit zal poorten 80, 81 en 82 binnen de container proxyen naar respectievelijk poorten 8080, 8081 en 8082 van je host. Zodra je de container start met de proxied poorten, kun je ze benaderen via de gespecificeerde host poorten.