当我运行my_container
时,我有一个名为docker run -i -t my_container
的容器,然后我可以运行npm --version
并获得2.7.4
。
但是当我尝试使用docker run --workdir=/home/ubuntu/www my_container npm --version
从容器外部运行相同的命令时,我收到一条错误消息:
无法找到npm。 lxc-start:容器无法启动。 lxcstart:可以通过设置--logfile和--logpriority选项来获取其他信息。
我运行的大多数命令都有同样的行为,而不仅仅是npm
。如果能增加更多线索,我在圆圈CI中这样做。
答案 0 :(得分:2)
可能是因为容器entrypoint
旨在为您提供一个shell,但不会接受参数。您可以使用docker inspect
查看图像的入口点。
$ docker build -
FROM busybox
ENTRYPOINT ["/bin/sh"]
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM busybox
---> 8c2e06607696
Step 1 : ENTRYPOINT /bin/sh
---> Running in eb5b4d32af96
---> ad1286aebbe2
Removing intermediate container eb5b4d32af96
Successfully built ad1286aebbe2
13:59 ~ $ docker run --rm -ti ad1286aebbe2 echo hi
/bin/sh: can't open 'echo'
busybox
官方没有入口点,因此参数被视为命令,这意味着他们直接进入/ bin / sh -c。