从Docker容器中复制文件到宿主机
在不关闭Docker容器的前提下,可以使用以下几种方法从容器中提取某个目录的文件:
方法一:使用 docker cp
命令
docker cp
命令允许你在宿主机和容器之间复制文件或目录。语法如下:
1 | docker cp <container_id>:/path/to/directory /path/to/local/directory |
例如,要从容器中提取 /app
目录到宿主机的 /tmp
目录:
1 | docker cp <container_id>:/app /tmp |
方法二:使用 docker exec
命令结合 tar
使用 docker exec
命令进入容器,然后使用 tar
命令将目录打包并传输到宿主机。例如:
- 进入容器并将目录打包:
1 | docker exec <container_id> tar -czvf /tmp/app.tar.gz /path/to/directory |
- 使用
docker cp
将打包的文件复制到宿主机:
1 | docker cp <container_id>:/tmp/app.tar.gz /path/to/local/app.tar.gz |
- 在宿主机上解压缩文件:
1 | tar -xzvf /path/to/local/app.tar.gz -C /path/to/local/directory |
方法三:使用绑定卷(Volume)
如果你在启动容器时已经使用绑定卷,那么可以直接访问宿主机上的目录。例如:
1 | docker run -v /host/directory:/container/directory <image> |
在这种情况下,容器中的 /container/directory
实际上是宿主机上的 /host/directory
,你可以直接在宿主机上访问该目录。
方法四:使用 rsync
命令
如果容器中有 rsync
安装,你也可以使用 docker exec
配合 rsync
将文件同步到宿主机:
1 | docker exec <container_id> rsync -av /path/to/directory /host/directory |
这种方法需要宿主机的目录已经挂载到容器中。
示例
假设你有一个容器 ID 为 abc123
,并且想提取容器中的 /app
目录到宿主机的 /tmp/app
目录,可以使用以下命令:
1 | docker cp abc123:/app /tmp/app |
以上这些方法可以帮助你在不关闭Docker容器的前提下,从容器中提取特定目录的文件。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 南岩 のBlog!