Skip to content

Latest commit

 

History

History
69 lines (55 loc) · 2.58 KB

day-10.md

File metadata and controls

69 lines (55 loc) · 2.58 KB

30 Days of Docker - Day 10

دائما مع Dockerfiles .. كاينين 3 ديال Commands لي لي تايمكنونا نexecutew commands، لي هوما RUN و CMD و ENTRYPOINT .
  • بالنسية لRUN الCommand تاتexecuta وسط الimage براسها، يعني منين تاندير docker build .
# dockerfile
...
RUN apt-get update && apt-get install curl
...
# ---
# this will be executed when we'll call this
$ docker build -t devc:rabat .
  • بالنسبة لCMD و ENTRYPOINT تايexecutaw منين تانرانيو container ديالنا. يعني Docker run
# dockerfile
...
CMD curl Devc.com
...
# ---
# this will be executed when we'll call this
$ docker run devc:rabat
حاجة أخرى مهمة هي أنن هاذ الكوماندس ممكن ياخدو 2 أشكال
  • الEXEC Form و هنا تانعطيو الbinary لي بغينا نexecutew مع باراميترز ديالو على شكل array و docker تايمشي يقلب في الPATH و تايقضي الغرض
# dockerfile
...
RUN ["apt", "install", "-y", "curl"]
CMD ["/bin/curl", "https://devc.com"]
...
  • الSHELL form لي تانعطيو فيها commands لي بغينا على شكل string هاذ المرة و Docker تايدوزهم للشيل الشهير sh باش يexecutehom
هاذ الثانية تاتنفعنا ايلا بغينا نستعملو شي خاصيات ديال الشيل بحال && و || و pipes ....
# dockerfile
...
RUN apt install -y curl
# is equivalent to
CMD ["/bin/sh", "-c", "apt install -y curl"]

ملاحظات:
  • بالنسبة لshell form، في حالة CMD أو ENTRYPOINT الpid 1 تايكون هو sh و هاذشي لي تايمنعنا من أننا نتواصلو مع الexecutable ديالنا مباشرة باستعمال Unix Signals يعني ايلا كان عندك شي program تاي...handle CTRL+C or CTRL+Z بشي طريقة في شكل من الأحسن تستعمل EXEC form .. حيت في هاذ الحالة غادي يكون sh حاجز بينك و بين البروكّرام ديالك و هو لي غادي يتكلف ب signals.
  • كاين فرق بين CMD و ENTRYPOINT غادي نهضرو عليه المرة الجاية