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. AgarCMDbilanENTRYPOINTbirga ishlatilsa,CMDENTRYPOINTuchun 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,
ENTRYPOINTdan foydalaning (masalan, veb-server). ENTRYPOINTuchun standart argumentlar taqdim etish yoki rasm turli maqsadlarda ishlatilishi mumkinligini ko'rsatish uchunCMDdan 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.