Exponera portar med Dockerfiles

Docker för medelnivå

Mike Metzger

Data Engineer

Exponera tjänster

  • Kommandot EXPOSE
  • Definierar vilka portar containern använder vid körning
  • Kan anges som <number>, <number>/tcp eller <number>/udp
    • Till exempel EXPOSE 80 eller EXPOSE 80/tcp
  • Flera poster tillåtna
  • Används som dokumentationsmetod
Docker för medelnivå

Använda flaggorna -p / -P

  • Kräver fortfarande flaggorna -p eller -P till docker run för att göra portarna tillgängliga utanför containern
  • Flaggan -P mappar automatiskt en tillfällig port till den exponerade porten/portarna. Använd docker ps -a för att se vilka portar som mappats.
  • Med -p<host port>:<container port> kan du ange specifika portar.
Docker för medelnivå

Exempel på EXPOSE

# Dockerfile
FROM python:3.11-slim
ENTRYPOINT ["python","-mhttp.server"]
# Let the Docker engine know 
# port 8000 should be available
EXPOSE 8000
  • Skapa en container från imagen
    docker run pyserver
    
  • Visa containerns status
    docker ps -a
    
CONTAINER ID   IMAGE         ...   PORTS      NAMES
8c3d320255ae   pyserver      ...   8000/tcp   angry_chaum
Docker för medelnivå

Göra portar nåbara

  • Mappa automatiskt en tillfällig port från värden till containern
    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 medelnivå

Hitta exponerade portar

  • docker inspect ger omfattande information
    docker inspect <id>
    
"NetworkSettings": {
  "Bridge": "",
  "Ports": {
    "8000/tcp": [{
                   "HostIp": "0.0.0.0",
                   "HostPort": "55001"
                    }]
            },
...
Docker för medelnivå

Nu kör vi en övning!

Docker för medelnivå

Preparing Video For Download...