Expunerea porturilor cu Dockerfile-uri

Docker intermediar

Mike Metzger

Data Engineer

Expunerea serviciilor

  • Comanda EXPOSE
  • Definește porturile utilizate de container la rulare
  • Poate fi definită ca <number>, <number>/tcp sau <number>/udp
    • De exemplu: EXPOSE 80 sau EXPOSE 80/tcp
  • Sunt permise mai multe intrări
  • Utilizată ca metodă de documentare
Docker intermediar

Utilizarea opțiunilor -p / -P

  • Necesită în continuare opțiunile -p sau -P la docker run pentru a face porturile accesibile din exterior
  • Opțiunea -P mapează automat un port efemer la portul (porturile) expus(e). Utilizați docker ps -a pentru a vedea porturile mapate.
  • Folosind -p<host port>:<container port> se pot specifica porturi exacte.
Docker intermediar

Exemplu EXPOSE

# Dockerfile
FROM python:3.11-slim
ENTRYPOINT ["python","-mhttp.server"]
# Let the Docker engine know 
# port 8000 should be available
EXPOSE 8000
  • Creați un container din imagine
    docker run pyserver
    
  • Afișați starea containerului
    docker ps -a
    
CONTAINER ID   IMAGE         ...   PORTS      NAMES
8c3d320255ae   pyserver      ...   8000/tcp   angry_chaum
Docker intermediar

Accesibilizarea porturilor

  • Mapați automat un port temporar de la gazdă la 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 intermediar

Găsirea porturilor expuse

  • docker inspect oferă multe informații
    docker inspect <id>
    
"NetworkSettings": {
  "Bridge": "",
  "Ports": {
    "8000/tcp": [{
                   "HostIp": "0.0.0.0",
                   "HostPort": "55001"
                    }]
            },
...
Docker intermediar

Să exersăm!

Docker intermediar

Preparing Video For Download...