Port yayınlama
- Docker & Kubernetes kursu
- Başlangıç
- Ders 76/82
- 4 dk
Ağ üzerinde port yayınlamayı öğrenirsin.
Port yayınlama ve iç trafik
Aynı ağdaki container'lar birbirine container portu üzerinden doğrudan erişir; port yayınlamak yalnızca ana makine ve dış dünya içindir. Bu yüzden bağlantı adresinde ana makine portu değil, container portu kullanılır:
docker run -d --name db --network arka -p 15432:5432 postgres:16
# ana makineden: psql -h localhost -p 15432
# arka ağındaki api: postgresql://db:5432/app (15432 değil!)Ters vekil deseni
Yaygın düzen: yalnızca bir ters vekil (nginx, Traefik, Caddy) 80/443'ü yayınlar ve isteği ağ içindeki servislere servis adlarıyla iletir. Uygulama ve veritabanı hiçbir port yayınlamaz:
# nginx.conf
location /api/ {
proxy_pass http://api:8000/;
}
docker run -d --name vekil --network on -p 80:80 -v "$PWD/nginx.conf":/etc/nginx/conf.d/default.conf:ro nginxUygulama Vekilli yapı
İki komut yaz: api:1.0'dan api adlı container'ı arka planda on ağında ve port yayınlamadan başlat; nginx'ten vekil adlı container'ı arka planda on ağında, 80'i 80'e eşleyerek ve "$PWD/nginx.conf"'u /etc/nginx/conf.d/default.conf'a salt okunur bağlayarak başlat.
Başlangıç kodu
# buraya yazÖrnek çözüm
docker run -d --name api --network on api:1.0
docker run -d --name vekil --network on -p 80:80 -v "$PWD/nginx.conf":/etc/nginx/conf.d/default.conf:ro nginxBeklenen çıktı
091a2b3c4d5e 1a2b3c4d5e6f
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 db -p 15432:5432 ile yayınlandıysa aynı ağdaki api hangi adrese bağlanmalıdır?
- db:5432 Doğru cevap
- db:15432
- localhost:15432
- localhost:5432
Açıklama: Container içinde localhost container'ın kendisidir.
2 İsteği api servisine ilet.
location /api/ {
proxy_pass http://____:8000/;
}
location /api/ {
proxy_pass http://api:8000/;
}
Açıklama: Ağ içindeki servis adı DNS adıdır.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
container portu |
Ağ içi trafik |
yayınlanan port |
Ana makine ve dış dünya |
ters vekil |
Tek giriş noktası |
localhost (container içinde) |
Container'ın kendisi |