ENTRYPOINT
নির্দিষ্ট করে কমান্ড যে সবসময় যখন ধারক শুরু মৃত্যুদন্ড কার্যকর করা হবে না।
CMD
নির্দিষ্ট করে যুক্তি হল যে খাওয়ানো হবে ENTRYPOINT
।
আপনি যদি কোনও নির্দিষ্ট কমান্ডের জন্য নিবেদিত কোনও চিত্র তৈরি করতে চান তবে আপনি ব্যবহার করবেন ENTRYPOINT ["/path/dedicated_command"]
অন্যথায়, আপনি যদি সাধারণ উদ্দেশ্যে কোনও চিত্র তৈরি করতে চান তবে আপনি ENTRYPOINT
অনির্ধারিত রেখে দিতে পারেন এবং CMD ["/path/dedicated_command"]
যুক্তি সরবরাহ করে সেটিংসকে ওভাররাইড করতে সক্ষম হবেন তাইdocker run
।
উদাহরণস্বরূপ, যদি আপনার ডকফেরফিলটি হয়:
FROM debian:wheezy
ENTRYPOINT ["/bin/ping"]
CMD ["localhost"]
কোনও যুক্তি ছাড়াই চিত্র চালানো লোকালহোস্টকে পিন করবে:
$ docker run -it test
PING localhost (127.0.0.1): 48 data bytes
56 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.096 ms
56 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.088 ms
56 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.088 ms
^C--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.088/0.091/0.096/0.000 ms
এখন, একটি আর্গুমেন্ট সহ চিত্রটি চালানো যুক্তিটি পিন করবে:
$ docker run -it test google.com
PING google.com (173.194.45.70): 48 data bytes
56 bytes from 173.194.45.70: icmp_seq=0 ttl=55 time=32.583 ms
56 bytes from 173.194.45.70: icmp_seq=2 ttl=55 time=30.327 ms
56 bytes from 173.194.45.70: icmp_seq=4 ttl=55 time=46.379 ms
^C--- google.com ping statistics ---
5 packets transmitted, 3 packets received, 40% packet loss
round-trip min/avg/max/stddev = 30.327/36.430/46.379/7.095 ms
তুলনার জন্য, যদি আপনার ডকফেরফিলটি হয়:
FROM debian:wheezy
CMD ["/bin/ping", "localhost"]
কোনও যুক্তি ছাড়াই চিত্র চালানো লোকালহোস্টকে পিন করবে:
$ docker run -it test
PING localhost (127.0.0.1): 48 data bytes
56 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.076 ms
56 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.087 ms
56 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.090 ms
^C--- localhost ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max/stddev = 0.076/0.084/0.090/0.000 ms
তবে একটি যুক্তি দিয়ে চিত্রটি চালানো যুক্তিটি চালিয়ে যাবে:
docker run -it test bash
root@e8bb7249b843:/#
আরও তথ্যের জন্য ব্রায়ান ডিহ্যামারের এই নিবন্ধটি দেখুন:
https://www.ctl.io/developers/blog/post/dockerfile-entryPoint-vs-cmd/