Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash脚本中的$@blank为ENTRYPOINT,除非--ENTRYPOINT_Bash_Docker - Fatal编程技术网

Bash脚本中的$@blank为ENTRYPOINT,除非--ENTRYPOINT

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 生产

考虑以下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
生产

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"]