docker cp 命令本身不提供进度查看功能。但是,您可以使用第三方工具,如 pv(Pipe Viewer)在执行 docker cp 时查看进度。以下是使用 pv 查看 docker cp 进度的步

骤:

首先,安装 pv。根据您的操作系统,使用相应的包管理器安装 pv。

1
2
3
4
5
6
7
8
# Ubuntu/Debian:
sudo apt-get install pv

# CentOS/RHEL:
sudo yum install pv

# macOS(使用 Homebrew):
brew install pv

容器到主机

要将文件从容器复制到主机并查看进度,请执行以下命令:

1
docker exec <container_name> tar -cf - <source_path_inside_container> | pv | tar -xf - -C <destination_path_on_host>

将 <container_name> 替换为容器名称,<source_path_inside_container> 替换为容器内的源文件/目录路径,<destination_path_on_host> 替换为主机上的目标文件/目录路径。

例如,从名为 my_container 的容器复制 /data 目录到主机上的 /tmp/data 目录:

1
docker exec my_container tar -cf - /data | pv | tar -xf - -C /tmp/data

pv 将显示一个进度条,以及已传输、剩余和总字节数。

主机到容器

如果要从主机复制到容器并查看进度,可以使用以下命令:

1
tar -cf - <source_path_on_host> | pv | docker exec -i <container_name> tar -xf - -C <destination_path_inside_container>

<source_path_on_host> 替换为主机上的源文件/目录路径,<container_name> 替换为容器名称,<destination_path_inside_container> 替换为容器内的目标文件/目录路径。

例如,从主机上的 /tmp/data 目录复制到名为 my_container 的容器中的 /data 目录:

1
tar -cf - /tmp/data | pv | docker exec -i my_container tar -xf - -C /data

这个命令会将主机上的文件/目录通过 tar 命令打包,然后通过 pv 查看进度,并通过管道将数据发送到容器中。在容器中,tar 命令会将数据解包到指定的目录。pv 将显示一个进度条,以及已传输、剩余和总字节数。