Ports mit Dockerfiles freigeben

Docker für Fortgeschrittene

Mike Metzger

Data Engineer

Dienste freigeben

  • Befehl EXPOSE
  • Legt fest, welche Ports der Container zur Laufzeit nutzt
  • Möglich als <number>, <number>/tcp oder <number>/udp
    • z. B. EXPOSE 80 oder EXPOSE 80/tcp
  • Mehrere Einträge erlaubt
  • Dient als Dokumentation
Docker für Fortgeschrittene

Die Flags -p / -P verwenden

  • Du musst weiterhin die Optionen -p oder -P bei docker run nutzen, um Ports außerhalb des Containers verfügbar zu machen
  • Die Option -P ordnet automatisch einen temporären Port dem/den freigegebenen Port(s) zu. Nutze docker ps -a, um die Zuordnung zu sehen.
  • Mit -p<host port>:<container port> wählst du konkrete Ports.
Docker für Fortgeschrittene

EXPOSE-Beispiel

# Dockerfile
FROM python:3.11-slim
ENTRYPOINT ["python","-mhttp.server"]
# Dem Docker-Engine mitteilen,
# dass Port 8000 verfügbar sein soll
EXPOSE 8000
  • Erstelle einen Container aus dem Image
    docker run pyserver
    
  • Gib den Status des Containers aus
    docker ps -a
    
CONTAINER ID   IMAGE         ...   PORTS      NAMES
8c3d320255ae   pyserver      ...   8000/tcp   angry_chaum
Docker für Fortgeschrittene

Ports erreichbar machen

  • Automatisch einen temporären Host-Port auf den Container port abbilden
    docker run -P pyserver
    
docker ps -a
CONTAINER ID   IMAGE      ...   PORTS                     NAMES
6bb458ef25da   pyserver   ...   0.0.0.0:55001->8000/tcp   beautiful_lamarr
Docker für Fortgeschrittene

Freigegebene Ports finden

  • docker inspect liefert viele Informationen
    docker inspect <id>
    
"NetworkSettings": {
  "Bridge": "",
  "Ports": {
    "8000/tcp": [{
                   "HostIp": "0.0.0.0",
                   "HostPort": "55001"
                    }]
            },
...
Docker für Fortgeschrittene

Lass uns üben!

Docker für Fortgeschrittene

Preparing Video For Download...