运行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
我不明白为什么。
答案 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
命令, OPTION
是docker 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]
。