Vystavení portů pomocí Dockerfile

Intermediate Docker

Mike Metzger

Data Engineer

Vystavení služeb

  • Příkaz EXPOSE
  • Definuje porty, které kontejner použije za běhu
  • Lze zadat jako <číslo>, <číslo>/tcp nebo <číslo>/udp
    • Např. EXPOSE 80 nebo EXPOSE 80/tcp
  • Povoleno více záznamů
  • Slouží jako dokumentační metoda
Intermediate Docker

Použití příznaků -p / -P

  • Stále vyžaduje použití volby -p nebo -P příkazu docker run pro zpřístupnění portů mimo kontejner
  • Volba -P automaticky mapuje dočasný port na vystavený port. Ke zjištění mapování použijte docker ps -a.
  • Použití -p<port hostitele>:<port kontejneru> umožňuje určit konkrétní porty.
Intermediate Docker

Příklad příkazu EXPOSE

# Dockerfile
FROM python:3.11-slim
ENTRYPOINT ["python","-mhttp.server"]
# Let the Docker engine know 
# port 8000 should be available
EXPOSE 8000
  • Vytvoření kontejneru z image
    docker run pyserver
    
  • Výpis stavu kontejneru
    docker ps -a
    
CONTAINER ID   IMAGE         ...   PORTS      NAMES
8c3d320255ae   pyserver      ...   8000/tcp   angry_chaum
Intermediate Docker

Zpřístupnění portů

  • Automatické mapování dočasného portu hostitele na kontejner
    docker run -P pyserver
    
docker ps -a
CONTAINER ID   IMAGE      ...   PORTS                     NAMES
6bb458ef25da   pyserver   ...   0.0.0.0:55001->8000/tcp   beautiful_lamarr
Intermediate Docker

Zjištění vystavených portů

  • docker inspect poskytuje mnoho informací
    docker inspect <id>
    
"NetworkSettings": {
  "Bridge": "",
  "Ports": {
    "8000/tcp": [{
                   "HostIp": "0.0.0.0",
                   "HostPort": "55001"
                    }]
            },
...
Intermediate Docker

Pojďme si procvičit!

Intermediate Docker

Preparing Video For Download...