왜 작동하지 않는지

왜 작동하지 않는지

이름 끝이 변경된 디렉토리가 있습니다. 이 디렉토리에 포함된 파일을 복사할 수 있기를 원합니다. 예를 들어, 다음 경로가 있습니다(뒤에 디렉터리 이름이 무엇인지 모르겠습니다 -. 예는 다음과 같습니다 ab).

/tmp/folder-ab/file

이 파일을 복사하고 싶습니다.

이는 docker 외부에서 작동합니다.

cp /tmp/folder-*/file /other/path/ 

하지만 도커 컨테이너에서 복사하고 싶어서 다음을 시도했습니다.

 docker cp $CONTAINERID:/tmp/[folder-]*/file /other/path/

다음 오류가 발생합니다.

Error response from daemon: lstat
 /var/lib/docker/100000.100000/devicemapper/mnt/1ae07ffeda9e69465058ad01439543ab17a142d74668350b9185c1632cd7dec7/rootfs/tmp/folder-*/file:
 no such file or directory

답변1

왜 작동하지 않는지

귀하의 코드에서는 docker cp $CONTAINERID:/tmp/[folder-]*/file /other/pathglob( )을 사용했습니다 *. Globs는 셸에 의해 확장되지만 셸은 컨테이너의 파일에 대해 알지 못합니다. 현재 쉘 구성은 *마치 일반 문자인 것처럼 파일 이름에 보존됩니다. 그러면 Docker는 …/folder-*/…찾을 수 없다고 알려줍니다 .

무엇을 해야할지

테스트되지 않았습니다. 테스트해 보세요.

files="$(docker exec «container» bash -c "echo /folder-*/file")" #does not deal with spaces, etc.
do something with "$files"

또는

docker exec «container» bash -c 'for f in *; do printf "%s\0" "$f"; done' | \
xargs -0 --no-run-if-empty cp -t "/other/path"

관련 정보