Entrypoint و CMD دستورهایی در Dockerfile هستند که فرایند را در یک Docker image تعریف می‌کنند. بسته به اینکه چگونه می‌خواهید container خود را اجرا نمایید، می توانید از یکی یا هر دو دستور استفاده کنید.

یکی از تفاوت‌های این دو دستور این است که بر خلاف CMD، شما نمی‌توانید دستور ENTRYPOINT را فقط با افزودن پارامترهای خط فرمان جدید بازنویسی نمایید؛ بلکه باید دستور docker run را به همراه یک ساختار خاص تغییر دهید.

در این آموزش، نحوه بازنویسی کردن ENTRYPOINT با استفاده از دستور docker run شرح داده شده است.

 

به منظور دنبال کردن این آموزش، به موارد زیر نیاز خواهید داشت:

  • دسترسی به خط فرمان
  • کاربر با امتیازات sudo
  • Docker در حال اجرا
  • یک Docker image موجود

 

بازنویسی کردن ENTRYPOINT، با استفاده از دستور docker run

در اینجا به منظور آموزش نحوه بازنویسی کردن ENTRYPOINT، قصد داریم یک container اجرا کنیم که با ترکیب ENTRYPOINT و CMD در Dockerfile پیام Hello World را echo می‌نماید.

در Dockerfile، دستور ENTRYPOINT، بخش‌های قابل اجرا را تعریف می‌کند، در حالی که CMD، پارامتر پیش فرض را تعیین می‌نماید.

FROM ubuntu
MAINTAINER sofija
RUN apt-get update
ENTRYPOINT [“echo”, “Hello”]
CMD [“World”]

اگر از این فایل، یک image بسازید و از آن برای اجرای یک Docker container استفاده کنید، خروجی به صورت زیر خواهد بود:

 

شما به راحتی می‌توانید CMD پیش فرض را با افزودن پارامتر مورد نظر به دستور docker run بازنویسی نمایید:

sudo docker run [container_name] [new_parameter]

در مثال زیر، پارامتر World را (که CMD است) با افزودن Sofija به دستور docker run تغییر دادیم. در نتیجه، خروجی Hello Sofija را نمایش می‌دهد.

 

با این حال، ممکن است بخواهید بخش اجرایی پیش فرض را بازنویسی کرده و به عنوان مثال، یک shell در داخل یک container اجرا نمایید. در این حالت، شما باید از پرچم entrypoint-- استفاده کنید و container را با استفاده از ساختار زیر اجرا نمایید:

sudo docker run --entrypoint [new_command] [docker_image] [optional:value]

به منظور رونویسی کردن پیام پیش فرض echo در مثال ما و اجرای container به صورت تعاملی، از دستور زیر استفاده می‌کنیم:

sudo docker run -it --entrypoint /bin/bash [docker_image]

خروجی نشان می دهد که ما اکنون داخل container هستیم.

 

توجه: شما می‌توانید از ویژگی‌های مختلف به منظور پیکربندی تنظیمات مورد نظر خود برروی یک container استفاده نمایید. مقاله دستور Docker Run نحوه استفاده از دستور docker run را برای شما شرح داده است.

 

 

 

منبع:

phoenixnap