使用2条命令时docker run throw error`No such file or directory`

时间:2019-03-06 03:30:55

标签: linux docker

我发现如果我使用两个命令,第二个命令将无法批量读取文件(而第一个命令可以读取)。

[root@iZu51 test]# echo 'hello world' >> /data/test/a.txt
[root@iZu51 test]# docker run --rm -v /data/test:/data debian:stretch-slim cat /data/a.txt
hello world
[root@iZu51 test]# docker run --rm -v /data/test:/data debian:stretch-slim cat /data/a.txt && cat /data/a.txt
hello world
cat: /data/a.txt: No such file or directory
[root@iZu51 test]# docker run --rm -v /data/test:/data debian:stretch-slim cat /data/a.txt; cat /data/a.txt
hello world
cat: /data/a.txt: No such file or directory

如何解决?还是一个错误

2 个答案:

答案 0 :(得分:1)

不,这不是Docker中的错误。您只是在错误地使用它。具体来说:

  1. 您没有引用;&&,因此您的外壳正在解释它们,而Docker没有看到它们。
  2. Docker将docker exec的参数解释为程序的名称,然后解释其参数,而不是任意的shell东西。如果希望内壳解析它们,则需要用sh -c或类似的东西包装它们。

答案 1 :(得分:0)

这是因为您正在向docker运行命令,而第二个命令在docker外部

尝试根据自己的习惯使用bash -csh -c

docker run --rm -v /data/test:/data debian:stretch-slim bash -c 'cat /data/a.txt && cat /data/a.txt'