Poorten openen met Dockerfiles

Docker voor gevorderden

Mike Metzger

Data Engineer

Services exposen

  • EXPOSE-instructie
  • Bepaalt welke poorten de container gebruikt tijdens runtime
  • Mogelijk als <number>, <number>/tcp of <number>/udp
    • Bijvoorbeeld EXPOSE 80 of EXPOSE 80/tcp
  • Meerdere regels toegestaan
  • Dient als documentatie
Docker voor gevorderden

De flags -p / -P gebruiken

  • Nog steeds -p of -P bij docker run nodig om poorten buiten de container beschikbaar te maken
  • Optie -P koppelt automatisch een tijdelijke poort aan de exposed poort(en). Gebruik docker ps -a om te zien welke poorten zijn gekoppeld.
  • Met -p<host port>:<container port> kies je specifieke poorten.
Docker voor gevorderden

EXPOSE-voorbeeld

# Dockerfile
FROM python:3.11-slim
ENTRYPOINT ["python","-mhttp.server"]
# Laat de Docker-engine weten 
# dat poort 8000 beschikbaar moet zijn
EXPOSE 8000
  • Maak een container van de image
    docker run pyserver
    
  • Toon de status van de container
    docker ps -a
    
CONTAINER ID   IMAGE         ...   PORTS      NAMES
8c3d320255ae   pyserver      ...   8000/tcp   angry_chaum
Docker voor gevorderden

Poorten bereikbaar maken

  • Koppel automatisch een tijdelijke hostpoort aan de container
    docker run -P pyserver
    
docker ps -a
CONTAINER ID   IMAGE      ...   PORTS                     NAMES
6bb458ef25da   pyserver   ...   0.0.0.0:55001->8000/tcp   beautiful_lamarr
Docker voor gevorderden

Geopende poorten vinden

  • docker inspect geeft veel info
    docker inspect <id>
    
"NetworkSettings": {
  "Bridge": "",
  "Ports": {
    "8000/tcp": [{
                   "HostIp": "0.0.0.0",
                   "HostPort": "55001"
                    }]
            },
...
Docker voor gevorderden

Laten we oefenen!

Docker voor gevorderden

Preparing Video For Download...