linux – 为什么在docker容器内工作的命令不能通过docker run从外部工作?

当我运行docker run -i -t my_container时,我有一个名为my_container的容器然后我可以运行npm –version并得到2.7.4.

但是,当我尝试使用docker run –workdir = / home / ubuntu / www my_container npm –version从容器外部运行相同的命令时,我收到一条错误消息:

Unable to locate npm.
lxc-start: The container failed to start.
lxcstart: Additional information can be obtained by setting the –logfile and –logpriority options.

我运行的大多数命令都有同样的行为,而不仅仅是npm.我在圆圈CI中这样做,如果这增加了更多的线索.

最佳答案 可能是因为容器的入口点是为了给你一个
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.

点赞