Sobes.tech
Junior

Docker'da CMD va ENTRYPOINT komandalarining maqsadi nima?

sobes.tech AI

AIdan javob

CMD va ENTRYPOINT konteyner ishga tushirilganda bajariladigan ko'rsatmani belgilaydi.

Asosiy farq:

  • CMD — konteynerni ishga tushirishda argumentlar bilan oson yozib olinadigan ko'rsatma.
  • ENTRYPOINT — konteynerning asosiy buyruqini belgilovchi ko'rsatma. Ishga tushirilganda berilgan argumentlar unga qo'shiladi. Agar CMD bilan ENTRYPOINT birga ishlatilsa, CMD ENTRYPOINT uchun argumentga aylanadi.

Misollar:

CMD bilan Docker:

FROM alpine
CMD ["echo", "Salom, dunyo!"]

Ishga tushirish:

# "Salom, dunyo!" chiqaradi
docker run <rasm_nomi>

# `CMD` ni yozib yuboradi, "Bu boshqa buyruq" chiqaradi
docker run <rasm_nomi> echo "Bu boshqa buyruq"

ENTRYPOINT bilan Docker:

FROM alpine
ENTRYPOINT ["echo"]

Ishga tushirish:

# Bo'sh satr chiqaradi (argumentsiz echo)
docker run <rasm_nomi>

# Argumentlar qo'shadi, "Salom, dunyo!" chiqaradi
docker run <rasm_nomi> "Salom, dunyo!"

ENTRYPOINT va CMD bilan Docker:

FROM alpine
ENTRYPOINT ["echo"]
CMD ["Salom, dunyo!"]

Ishga tushirish:

# `CMD` `ENTRYPOINT` uchun argumentga aylanadi, "Salom, dunyo!" chiqaradi
docker run <rasm_nomi>

# Argumentlar `CMD` ni yozib yuboradi, lekin `ENTRYPOINT` qoladi. "Boshqa buyruq" chiqaradi
docker run <rasm_nomi> "Boshqa buyruq"

Taqqoslash jadvali:

Xususiyat CMD ENTRYPOINT
Maqsad Standart buyruq yoki argumentlar Konteynerning asosiy buyruqi
Ishga tushirishda yozib yuborish Oson yozib yuboriladi argumentlar bilan O'z buyrugiga argumentlar qo'shadi
Boshqa ko'rsatma bilan mosligi ENTRYPOINT uchun argumentlar taqdim etishi mumkin CMD ni o'z argumentlari sifatida ishlatadi

Eng yaxshi amaliyotlar:

  • Agar rasm ma'lum bir bajariladigan faylni ishga tushirish uchun mo'ljallangan bo'lsa, ENTRYPOINT dan foydalaning (masalan, veb-server).
  • ENTRYPOINT uchun standart argumentlar taqdim etish yoki rasm turli maqsadlarda ishlatilishi mumkinligini ko'rsatish uchun CMD dan foydalaning.
  • "exec" formatini (["bajariladigan", "argument1", ...]) "shell" formatidan (buyruq argumentlar) afzal ko'ring. "exec" formati jarayonni shellda boshlamaydi, bu signal va muhit o'zgaruvchilari bilan bog'liq muammolarni oldini oladi.