4

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. 如果这增加了更多线索,我将在 Circle CI 中执行此操作。

4

1 回答 1

3

可能是因为容器的entrypoint设计目的是为您提供一个外壳,但不接受参数。您可以使用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。

于 2015-05-28T17:58:18.317 回答