如何获取Docker容器内所有文件并在Ubuntu服务器打包为ZIP?
把Docker容器内项目文件复制到Ubuntu服务器并打包ZIP的操作步骤
1. 确认容器ID和目标文件路径
- 先运行
docker container ls获取要操作的容器ID(就是你说的<container_hash>) - 要是不确定项目文件在容器里的具体路径,直接进容器查看:
进去后用docker exec -it <container_hash> shls或者find找到项目文件的根目录,比如/app/my-project,记好这个路径。
2. 把容器内文件复制到服务器本地
用docker cp命令直接复制,格式如下:
docker cp <container_hash>:<容器内项目路径> <服务器本地目标路径>
举个实际例子:把容器内的/app/my-project复制到服务器的/home/user/backup目录:
docker cp abc123:/app/my-project /home/user/backup
(把abc123换成你的真实容器ID就行)
3. 打包成ZIP文件
如果服务器上没装zip工具,先安装:
sudo apt update && sudo apt install zip -y
然后直接打包,比如把刚才复制过来的目录打包成my-project-backup.zip:
zip -r my-project-backup.zip /home/user/backup/my-project
-r参数是递归打包目录下所有文件和子文件夹- 文件名可以自己随便改,比如换成你想要的名字
可选:先在容器内打包再复制(适合大文件)
如果项目文件很大,先在容器里打包再复制能省时间:
- 直接在容器内执行打包命令,把文件临时存在容器的
/tmp目录:docker exec -it <container_hash> sh -c "cd /app/my-project && zip -r /tmp/my-project.zip ." - 把容器里的ZIP包复制到服务器本地:
docker cp <container_hash>:/tmp/my-project.zip /home/user/backup/ - (可选)清理容器内的临时ZIP包:
docker exec -it <container_hash> rm /tmp/my-project.zip
内容的提问来源于stack exchange,提问作者Martin AJ
相关产品推荐
相关产品推荐

