这个问题在这里已有答案:
我发现如果我使用两个命令,第二个命令就无法读取卷中的文件,(第一个可以读取它。)就像这样:
[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
怎么修好了?或者这是一个错误
这是因为你正在运行一个命令到docker,第二个是在docker之外
尝试使用bash -c
或sh -c
,具体取决于你的shell
docker run --rm -v /data/test:/data debian:stretch-slim bash -c 'cat /data/a.txt && cat /data/a.txt'
不,这不是Docker中的错误。你只是错了。特别:
;
或&&
,所以你的外壳正在解释它们并且Docker没有看到它们。docker exec
的参数解释为程序的名称,然后是其参数,而不是任意的shell事物。如果你想让内壳解析它们,那么你需要用sh -c
或类似的东西来包装它们。