CodeBlanks Logo Icon CodeBlanks

CMD ve ENTRYPOINT

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.1

exec 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ır

Uygulama 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

terminal
# buraya yaz

Örnek çözüm

terminal
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.

Soru
CMD ____
Cevap
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

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