Docker:“无法识别的选项'-p'”

时间:2019-08-28 20:35:33

标签: docker

运行docker容器...

docker run --name mongodb -d mongo:3.4-xenial --expose 27017

在日志中导致错误“错误分析命令行:无法识别的选项'-p'”。

不过,将--expose参数向左移动可以正常工作:

docker run --name mongodb --expose 27017 -d mongo:3.4-xenial

我不明白为什么。

2 个答案:

答案 0 :(得分:1)

Docker运行文档:

  

用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG ...]

所以:

docker run --name mongodb -d mongo:3.4-xenial --expose 27017
在这种情况下,

--expose是容器的COMMAND(或入口点参数)(对于mongo,它看起来不是有效的命令)

但是:

docker run --name mongodb --expose 27017 -d mongo:3.4-xenial
在这种情况下,对于--expose 27017命令,

OPTIONdocker run

答案 1 :(得分:1)

docker run syntax是:docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...],将IMAGE[:TAG|@DIGEST]之后传递的所有内容作为[COMMAND] [ARG...]传递给ENTRYPOINT的容器。

docker inspect mongo:3.4-xenial --format {{.Config.Entrypoint}}ENTRYPOINT显示为docker-entrypoint.sh(例如,您实际上是在尝试执行docker-entrypoint.sh --expose ...)。

您可以跟踪执行,即:docker run --name mongodb --entrypoint bash mongo:3.4-xenial -c "bash -x docker-entrypoint.sh --expose 27017"

+ set -Eeuo pipefail
+ '[' - = - ']'
+ set -- mongod --expose 27017
+ originalArgOne=mongod
+ [[ mongod == mongo* ]]
++ id -u
+ '[' 0 = 0 ']'
+ '[' mongod = mongod ']'
+ find /data/configdb /data/db '!' -user mongodb -exec chown mongodb '{}' +
+ chown --dereference mongodb /proc/1/fd/1 /proc/1/fd/2
+ exec gosu mongodb /usr/local/bin/docker-entrypoint.sh mongod --expose 27017
Error parsing command line: unrecognised option '--expose'
try 'mongod --help' for more information

docker run --name mongodb --expose 27017 -d mongo:3.4-xenial正在--expose 27017 docker run中传递[OPTIONS]