0
考慮以下Dockerfile
:
FROM ubuntu:xenial-20170802
RUN (echo '#!/bin/bash'; echo 'echo "args: [email protected]"') > /run.sh && chmod a+x /run.sh
ENTRYPOINT /run.sh
使用泊塢1.12.6(Ubuntu的燦爛主機上,如果它的事項),如果我
docker build -t entrypoint-test .
docker run --rm entrypoint-test a b c
我只是得到
args:
換句話說,[email protected]
不工作。然而,這似乎表明,shell腳本本身是OK:
docker run --rm --entrypoint /bin/bash entrypoint-test /run.sh a b c
生產
args: a b c
預期。更奇怪的是,
docker run --rm --entrypoint /run.sh entrypoint-test a b c
的作品。請注意,與原始命令相比,我沒有做任何事情,只是將ENTRYPOINT
指令覆蓋的值爲--entrypoint
。那麼爲什麼這會使它工作?
我看不到docs中的任何內容,這些內容會暗示argv在某些情況下會爲空,可能涉及#!
可執行腳本。
添加
cat /proc/$$/cmdline
的shell腳本確認參數沒有被傳承下去,除非--entrypoint
用於:
/bin/bash^@/run.sh^@a^@b^@c^@
與
/bin/bash^@/run.sh^@