Dockerfile'larla port açığa çıkarma

Orta Düzey Docker

Mike Metzger

Data Engineer

Hizmetleri açığa çıkarma

  • EXPOSE komutu
  • Çalışma zamanında konteynerin kullanacağı portları tanımlar
  • <number>, <number>/tcp veya <number>/udp olarak yazılabilir
    • Örn. EXPOSE 80 veya EXPOSE 80/tcp
  • Birden çok satıra izin verilir
  • Belgelendirme amacıyla kullanılır
Orta Düzey Docker

-p / -P bayraklarını kullanma

  • Portları konteyner dışına açmak için yine docker run ile -p veya -P gerekir
  • -P, açığa çıkarılan port(lar)a otomatik geçici bir port eşler. Hangi portların eşlendiğini görmek için docker ps -a kullanılmalıdır.
  • -p<host portu>:<konteyner portu> belirli portları kullanmanızı sağlar.
Orta Düzey Docker

EXPOSE örneği

# Dockerfile
FROM python:3.11-slim
ENTRYPOINT ["python","-mhttp.server"]
# Docker motoruna
# 8000 portunun kullanılabilir olması gerektiğini bildir
EXPOSE 8000
  • Görüntüden bir konteyner oluşturun
    docker run pyserver
    
  • Konteynerin durumunu yazdırın
    docker ps -a
    
CONTAINER ID   IMAGE         ...   PORTS      NAMES
8c3d320255ae   pyserver      ...   8000/tcp   angry_chaum
Orta Düzey Docker

Portları erişilebilir kılma

  • Ana makineden konteynere otomatik geçici port eşlemesi yapar
    docker run -P pyserver
    
docker ps -a
CONTAINER ID   IMAGE      ...   PORTS                     NAMES
6bb458ef25da   pyserver   ...   0.0.0.0:55001->8000/tcp   beautiful_lamarr
Orta Düzey Docker

Açığa çıkarılmış portları bulma

  • docker inspect çok bilgi sağlar
    docker inspect <id>
    
"NetworkSettings": {
  "Bridge": "",
  "Ports": {
    "8000/tcp": [{
                   "HostIp": "0.0.0.0",
                   "HostPort": "55001"
                    }]
            },
...
Orta Düzey Docker

Hadi pratik yapalım!

Orta Düzey Docker

Preparing Video For Download...