使用通配符将所有文件从一个 docker 卷复制到另一个卷?

Copying all files from one docker volume to another using wild card characters?

之所以有效,是因为它正在复制 some_file:

docker run --rm -v target-data:/target -v ~/source:/source alpine cp source/some_file target/

这不是(使用通配符):

docker run --rm -v target-data:/target -v ~/source:/source alpine cp source/* target/
cp: can't stat 'source/*': No such file or directory

如何将souce卷中的所有文件复制到target卷中?

问题是谁扩展了 *:

docker run --rm -v target-data:/target -v ~/source:/source alpine sh -c 'cp -r source/* target/'

你需要有人(sh)在程序启动前扩展*(这就是shell在exec cp之前所做的)