Linux 使用2个命令时docker运行抛出错误“无此类文件或目录”

Linux 使用2个命令时docker运行抛出错误“无此类文件或目录”,linux,docker,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 -

我发现,如果我使用两个命令,第二个命令无法读取卷中的文件(而第一个命令可以读取),如下所示:

[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


如何修复它?或者它是一个bug

不,这不是Docker中的bug。你只是用错了。具体而言:

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

  • 这是因为您正在docker中运行一个命令,而第二个命令在docker之外

    根据您的sehll,尝试使用
    bash-c
    sh-c

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