Bash脚本中的$@blank为ENTRYPOINT,除非--ENTRYPOINT
考虑以下Dockerfile: 在Ubuntu Zesty主机上使用Docker 1.12.6,以防万一,如果我Bash脚本中的$@blank为ENTRYPOINT,除非--ENTRYPOINT,bash,docker,Bash,Docker,考虑以下Dockerfile: 在Ubuntu Zesty主机上使用Docker 1.12.6,以防万一,如果我 docker build -t entrypoint-test . docker run --rm entrypoint-test a b c 我只是 args: 换句话说,$@不起作用。但是,这似乎表明shell脚本本身是正常的: docker run --rm --entrypoint /bin/bash entrypoint-test /run.sh a b c 生产
docker build -t entrypoint-test .
docker run --rm entrypoint-test a b c
我只是
args:
换句话说,$@不起作用。但是,这似乎表明shell脚本本身是正常的:
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指令。那么,为什么这会让它起作用呢
我看不到有任何东西表明argv在某些情况下是空白的,可能涉及!可执行脚本
添加
cat /proc/$$/cmdline
除非使用-entrypoint,否则shell脚本确认不会传递参数:
vs
给我指出了正确的方向。请明确注意,“shell表单”不接受参数。以下语法有效:
ENTRYPOINT ["/run.sh"]
/bin/bash^@/run.sh^@a^@b^@c^@
/bin/bash^@/run.sh^@
ENTRYPOINT ["/run.sh"]