Docker는 이미지 진입 점에 인수를 추가하지 않습니다.


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가 추가됩니다.

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

... --ini다른 인수를 무시 하는 것이 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>
Anentropic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.