CMD ve ENTRYPOINT
- Docker & Kubernetes kursu
- Başlangıç
- Ders 23/82
- 4 dk
CMD ile container başlangıç komutunu belirlemeyi öğrenirsin.
CMD ve ENTRYPOINT
CMD, container'ın varsayılan komutudur; docker run image başka-komut ile tamamen değiştirilir. ENTRYPOINT ise sabit programdır; docker run'a verilen argümanlar ona eklenir. Birlikte kullanıldığında CMD varsayılan argüman olur:
ENTRYPOINT ["ping"]
CMD ["-c", "3", "localhost"]
# docker run pinger -> ping -c 3 localhost
# docker run pinger -c 1 1.1.1.1 -> ping -c 1 1.1.1.1exec biçimi ve shell biçimi
CMD ["python", "app.py"] (JSON dizisi) exec biçimidir: program doğrudan PID 1 olur ve docker stop'un gönderdiği SIGTERM'i alır. CMD python app.py shell biçimidir: komut /bin/sh -c içinde çalışır, sinyal kabuğa gider ve uygulama düzgün kapanamayabilir.
CMD ["python", "app.py"] # önerilen
CMD python app.py # sinyaller kabukta kalırUygulama Varsayılan argümanlı araç
alpine:3.20 tabanlı bir Dockerfile yaz: ENTRYPOINT exec biçiminde ping olsun; CMD varsayılan argümanları exec biçiminde -c, 3, localhost olsun.
Başlangıç kodu
# buraya yazÖrnek çözüm
FROM alpine:3.20
ENTRYPOINT ["ping"]
CMD ["-c", "3", "localhost"]Beklenen çıktı
PING localhost (127.0.0.1): 56 data bytes 64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.051 ms 3 packets transmitted, 3 packets received, 0% packet loss
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 ENTRYPOINT ["ping"] ve CMD ["localhost"] varken docker run img 8.8.8.8 ne çalıştırır?
- ping 8.8.8.8 Doğru cevap
- ping localhost 8.8.8.8
- 8.8.8.8
- ping localhost
Açıklama: Verilen argümanlar CMD'nin yerine geçer ve ENTRYPOINT'e eklenir.
2 Başlangıç komutunu exec biçiminde yaz.
CMD ____
CMD ["python", "app.py"]
Açıklama: Exec biçimi bir JSON dizisidir; çift tırnak zorunludur.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
CMD |
Değiştirilebilir varsayılan |
ENTRYPOINT |
Sabit program |
["a", "b"] |
Exec biçimi |
CMD a b |
Shell biçimi |