docker run throw error`使用2个命令时没有这样的文件或目录`[重复]

问题描述 投票:-2回答:2

这个问题在这里已有答案:

我发现如果我使用两个命令,第二个命令就无法读取卷中的文件,(第一个可以读取它。)就像这样:

[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

怎么修好了?或者这是一个错误

linux docker
2个回答
0
投票

这是因为你正在运行一个命令到docker,第二个是在docker之外

尝试使用bash -csh -c,具体取决于你的shell

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

1
投票

不,这不是Docker中的错误。你只是错了。特别:

  1. 你没有引用;&&,所以你的外壳正在解释它们并且Docker没有看到它们。
  2. Docker将docker exec的参数解释为程序的名称,然后是其参数,而不是任意的shell事物。如果你想让内壳解析它们,那么你需要用sh -c或类似的东西来包装它们。
© www.soinside.com 2019 - 2024. All rights reserved.