डॉकर ने इमेज एंट्रीपॉइंट के लिए दलील नहीं दी


13

मेरे पास एक डॉकरफाइल है:

ENTRYPOINT ["uwsgi", "--ini /home/docker/app/uwsgi_app.ini"]

(नहीं CMD)

जब मैं चला कि uwsgi सही शिकायत करता है:

uWSGI running as root, you can use --uid/--gid/--chroot options
*** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***

अब, मैंने सोचा था कि मैं प्रविष्टि के लिए तर्कों को इस docker runतरह से जोड़ सकता हूं :

$ docker run -itP uwsgi_app:0.1 --uid=docker

हालाँकि uwsgi अभी भी एक ही त्रुटि के साथ शिकायत करता है, ऐसा लगता है कि arg को जोड़ा नहीं गया है।

अगर मैं एंट्रीपॉइंट को ओवरराइड करता हूं तो arg जुड़ जाता है:

$ docker run -itP --entrypoint bash uwsgi_app:0.1 --uid=docker
bash: --uid=docker: invalid option

... मुझे आश्चर्य है कि अगर यह --iniअन्य args की अनदेखी uwsgi के विकल्प था , लेकिन यह नहीं है कि:

$ docker run -itP --entrypoint bash uwsgi_app:0.1
[ root@88941de25b1f:/home/docker ]$ uwsgi --ini /home/docker/app/uwsgi_app.ini --uid=docker
user docker not found.

(ठीक है, एक त्रुटि, लेकिन दिखाता है कि आर्ग स्वीकार कर लिया गया था)

जवाबों:


26

यह जवाब देता है कि कमांड लाइन से काम करने के लिए ENTRYPOINT(और / या CMD) के सरणी फॉर्म का उपयोग करना है

साथ में:

ENTRYPOINT ["uwsgi", "--ini", "/home/docker/app/uwsgi_app.ini"]

फिर:

$ docker run -itP uwsgi_app:0.2 --uid=docker
...
user docker not found.

(ठीक है, एक त्रुटि, लेकिन दिखाता है कि आर्ग स्वीकार कर लिया गया था)

यह व्यवहार वास्तव में डॉक्स में वर्णित है:
https://docs.docker.com/reference/builder/#entrypoint

... मुझे याद है कि जब स्किम उन्हें पढ़ रही है :)


मैं कमांड लाइन पर सरणी तर्क को docker run --entrypoint ... IMAGE में कैसे बदलूं?
eel ghEEz

मुझे नहीं लगता कि रन कमांड docs.docker.com/engine/reference/run/ के लिए एक सरणी फॉर्म है- शायद आपको इसे उद्धृत करना होगा जैसेdocker run --entrypoint "uwsgi --ini /home/docker/app/uwsgi_app.ini" <image>
एंथ्रोपिक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.