CodeBlanks Logo Icon CodeBlanks

Rastgele port

-P bayrağı ile rastgele port atamayı öğrenirsin.

Rastgele port

Ana makine portu yazılmazsa (-p 80) Docker boşta olan yüksek bir port seçer. -P (büyük harf) ise image'daki tüm EXPOSE edilen portları rastgele portlara yayınlar:

$ docker run -d --name w1 -p 80 nginx
$ docker port w1
80/tcp -> 0.0.0.0:32768
$ docker run -d --name w2 -P nginx
$ docker port w2
80/tcp -> 0.0.0.0:32769

Ne zaman kullanılır?

Rastgele portlar, aynı servisin birçok kopyasını çakışma olmadan açmak (testler, CI) için kullanışlıdır. Seçilen port sonra betikle okunur:

docker run -d --name test-db -P postgres:16
PORT=$(docker port test-db 5432 | cut -d: -f2)
echo "Bağlantı: localhost:$PORT"

Uygulama Test veritabanı

İki komut yaz: postgres:16'dan test-db adlı container'ı arka planda, POSTGRES_PASSWORD=test ile ve EXPOSE edilen tüm portları rastgele yayınlayarak başlat; ardından 5432 portunun hangi ana makine portuna eşlendiğini göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
docker run -d --name test-db -e POSTGRES_PASSWORD=test -P postgres:16
docker port test-db 5432

Beklenen çıktı

7a8b9c0d1e2f
0.0.0.0:32770

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 -P bayrağı hangi portları yayınlar?

  • Yalnızca 80'i
  • Hiçbirini
  • Ana makinenin tüm portlarını
  • Image'da EXPOSE ile belirtilen tüm portları Doğru cevap

Açıklama: EXPOSE'un somut bir etkisi budur.

2 EXPOSE edilen tüm portları rastgele yayınla.

Soru
docker run -d ____ nginx
Cevap
docker run -d -P nginx

Açıklama: Büyük P "publish all" anlamındadır.

3 Eşleştir.

Kavram Anlamı
-p 80 Rastgele ana makine portu
-P Tüm EXPOSE portları
32768 Seçilen yüksek port
docker port Seçileni öğren

Başlangıç bölümündeki tüm dersler