-p bayrağı
- Docker & Kubernetes kursu
- Başlangıç
- Ders 44/82
- 4 dk
-p bayrağı ile port eşleştirmeyi öğrenirsin.
-p bayrağı
-p (--publish) biçimi [ana_makine_ip:]ana_makine_portu:container_portu[/protokol]'dur. Sol taraf ana makine, sağ taraf container'dır; bunu karıştırmak en sık hatadır:
docker run -d -p 3000:8080 api:1.0 # localhost:3000 -> container 8080
docker run -d -p 5353:53/udp dns-sunucu # UDP portuPort çakışması
Bir ana makine portu yalnızca bir container'a (ya da sürece) yayınlanabilir. İkinci deneme hata verir; farklı bir ana makine portu seçilir:
$ docker run -d -p 8080:80 nginx
$ docker run -d -p 8080:80 nginx
Error: Bind for 0.0.0.0:8080 failed: port is already allocated
$ docker run -d -p 8081:80 nginx # ikinci kopya 8081'deUygulama İki kopya, iki port
api:1.0 image'ından iki container'ı arka planda başlat: api1 ana makinenin 3000 portunu, api2 3001 portunu container'ın 8080 portuna eşlesin.
Başlangıç kodu
# buraya yazÖrnek çözüm
docker run -d --name api1 -p 3000:8080 api:1.0
docker run -d --name api2 -p 3001:8080 api:1.0Beklenen çıktı
b1c2d3e4f5a6 c2d3e4f5a6b7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Uygulama container içinde 8080'i dinliyor ve sen tarayıcıda localhost:3000 açmak istiyorsun. Hangisi doğrudur?
- --expose 3000
- -p 3000:8080 Doğru cevap
- -p 8080:3000
- -p 3000
Açıklama: Ana makine solda, container sağdadır.
2 UDP portunu yayınla.
docker run -d -p 5353:53____ dns-sunucu
docker run -d -p 5353:53/udp dns-sunucu
Açıklama: Protokol eğik çizgiyle eklenir; varsayılan tcp'dir.
3 Eşlemeleri eşleştir.
| Kavram | Anlamı |
|---|---|
-p 3000:8080 |
localhost:3000 → 8080 |
-p 8081:80 |
localhost:8081 → 80 |
/udp |
UDP protokolü |
port is already allocated |
Ana makine portu dolu |