How to copy multiple files from container to host using docker cp How to copy multiple files from container to host using docker cp docker docker

How to copy multiple files from container to host using docker cp


In fact your solution can make your aims just need a little change:

for f in $(docker exec -it SPSRS bash -c "ls /opt/tpa/logs/metrics.csv*"); do docker cp SPSRS:$f /root/metrices_testing/; done

->

for f in $(docker exec -it SPSRS bash -c "ls /opt/tpa/logs/metrics.csv*"); do docker cp SPSRS:`echo $f | sed 's/\r//g'` /root/metrices_testing/; done

This is because docker exec -it SPSRS bash -c "ls /opt/tpa/logs/metrics.csv*" will have \r in every matched string, so finally the cp can not find the files in container.

So, we use echo $f | sed 's/\r//g' to get rid of \r for every file name, this could make you work.


Docker cp command supports to copy folder with all the contents inside a folder

docker cp -a container-id:/opt/tpa/logs/  /root/testing/

In the above example copying files from container folder /opt/tpa/logs to local machine /root/testing/ folder. Here all the files inside /logs/ will be copied to local. The trick here is using -a option along with docker cp


Docker cp still doesn't support wildcards. You can however use them in a Dockerfile in the following way:

COPY hom* /mydir/        # adds all files starting with "hom"COPY hom?.txt /mydir/    # ? is replaced with any single character, e.g., "home.txt"

Reference: https://docs.docker.com/engine/reference/builder/#copy