重庆建设工程公司网站,优秀的个人网页,湖北百度推广公司,有哪些免费的服务器如果要导出 Docker 容器内的 整个目录#xff08;包含所有文件及子目录#xff09;#xff0c;可以使用以下几种方法#xff1a; 方法 1#xff1a;使用 docker cp 直接复制目录到宿主机
适用场景#xff1a;容器正在运行或已停止#xff08;但未删除#xff09;。 命…如果要导出 Docker 容器内的 整个目录包含所有文件及子目录可以使用以下几种方法 方法 1使用 docker cp 直接复制目录到宿主机
适用场景容器正在运行或已停止但未删除。 命令格式
docker cp 容器名或ID:容器内目录路径 宿主机目标路径示例导出 MySQL 容器的 /var/lib/mysql 数据目录
docker cp mysql_container:/var/lib/mysql /host/backup/mysql_data说明 /host/backup/mysql_data 是宿主机上的目标路径需提前创建。导出后宿主机上会得到一个完整的 mysql_data 目录包含所有文件。
ps : 也可以将文件复制进容器内部 docker cp 宿主机文件或目录路径 容器名或ID:容器内目标路径 示例
复制单个文件到容器的 /tmp 目录 docker cp /host/path/file.txt mycontainer:/tmp/
复制整个目录到容器的 /app/data 目录docker cp /host/path/folder/ mycontainer:/app/data/
注意如果目标路径以 / 结尾如 /app/data/Docker 会将目录内容复制到该路径下。 如果不以 / 结尾如 /app/dataDocker 会将整个目录作为子目录复制。 方法 2启动临时容器挂载目录并复制
适用场景容器已删除但数据仍在匿名卷中。 步骤
查找容器的匿名卷docker volume ls # 找到与容器关联的匿名卷如 abcd1234...启动临时容器挂载匿名卷并复制数据docker run --rm -v 匿名卷名:/source -v /host/backup:/backup alpine \sh -c cp -r /source /backup/mysql_data示例docker run --rm -v abcd1234:/var/lib/mysql -v /home/user/backup:/backup alpine \sh -c cp -r /var/lib/mysql /backup/mysql_data方法 3通过 docker commit 创建镜像再导出
适用场景容器已停止或损坏但文件系统仍可访问。 步骤
将容器保存为新镜像docker commit 容器名或ID temp_mysql_image启动临时容器并导出目录docker run --rm -v /host/backup:/backup temp_mysql_image \sh -c cp -r /var/lib/mysql /backup/mysql_data清理临时镜像docker rmi temp_mysql_image方法 4直接访问 Docker 存储驱动数据高级
适用场景容器已删除且无匿名卷但数据仍在 Docker 存储目录中如 overlay2。 步骤
找到容器的存储层docker inspect 容器名或ID | grep MergeDir输出类似MergeDir: /var/lib/docker/overlay2/abcd1234/merged 直接复制数据cp -r /var/lib/docker/overlay2/容器ID/merged/var/lib/mysql /host/backup/mysql_data注意需 root 权限且路径因 Docker 存储驱动而异如 overlay2、aufs。 验证导出的数据
检查宿主机上的目录结构和文件
ls -l /host/backup/mysql_data如果导出的是 MySQL 数据应能看到 .ibd、.frm 等文件。 如何避免未来数据丢失
始终挂载数据卷docker run -v /host/mysql_data:/var/lib/mysql mysql使用命名卷Docker 自动管理docker run -v mysql_data:/var/lib/mysql mysql定期备份docker exec mysql_container sh -c mysqldump -u root -p$MYSQL_ROOT_PASSWORD --all-databases /backup.sql
docker cp mysql_container:/backup.sql /host/backup.sql总结表格
方法适用场景命令示例docker cp容器仍在运行或存在docker cp mysql:/var/lib/mysql /backup匿名卷挂载容器已删除但卷存在docker run --rm -v 卷名:/source -v /backup:/backup alpine cp -r /source /backupdocker commit容器损坏但文件系统可读docker commit 临时容器复制直接访问存储层紧急恢复需 root 权限从 /var/lib/docker/overlay2/ID/merged 复制数据
选择最适合你场景的方法确保数据安全