Rastgele port
- Docker & Kubernetes kursu
- Başlangıç
- Ders 46/82
- 4 dk
-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:32769Ne 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
# buraya yazÖrnek çözüm
docker run -d --name test-db -e POSTGRES_PASSWORD=test -P postgres:16
docker port test-db 5432Beklenen çı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.
docker run -d ____ nginx
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 |