docker
  • docker教程
  • advanced
    • Docker 构建缓存指南
    • Docker清理数据卷(volume prune)
    • Docker分配CPU资源
    • Dockerfile+Maven插件构建SpringBoot镜像(推荐)
    • Dockerfile构建SpringBoot镜像
    • docker-find-volume-container-mapping
    • idea配置docker
    • Docker inspect 检测所有容器挂载状态的脚本
    • Docker inspect 查看容器、镜像的高级用法
    • Docker Jenkins进阶配置
    • 基于jenkins容器部署SpringBoot应用构建镜像(基于Dockerfile+Maven插件构建)
    • Maven插件构建SpringBoot镜像(二)
    • 基于Maven插件为SpringBoot应用构建镜像并推送到远程_私人仓库(Docker Hub)
    • Maven插件构建SpringBoot镜像(一)
    • Docker MongoDB进阶配置
    • Docker 多阶段构建指南
    • Docker MySql进阶配置
    • Docker network进阶配置
    • Docker Nginx进阶配置
    • Docker清理悬空镜像(空(none)镜像)
    • Docker pip install --no-cache-dir
    • Docker redis进阶配置
    • Docker安全的清理匿名数据卷
    • Docker Bind Mount vs Volume 的区别
  • concepts
    • docker、docker engine和docker desktop区别
    • 架构
    • 什么是容器?
    • 什么是镜像?
    • 什么是Docker?
    • 什么是仓库?
  • docker-compose
    • Docker Compose 锚点的用法
    • docker-compose 编排多服务
    • docker-compose 常用命令
    • docker-compose 部署jenkins
    • docker-compose安装mySql
    • docker-compose网络配置
    • docker-compose安装nginx
    • docker-compose安装redis
    • docker Compose 示例1
  • docker-hub
    • Docker Hub账号服务说明
  • install
    • CentOS Docker 安装
    • Debian Docker 安装
    • Docker 安装 Apache
    • Docker 安装 CentOS
    • Docker 安装 Elasticsearch
    • Docker 安装 GitLab
    • Docker 安装 Jenkins
    • Docker 安装 MongoDB
    • Docker 安装 MySQL
    • Docker 安装 Nginx
    • Docker 安装 Node.js
    • Docker 安装 PHP
    • Docker 安装 Portainer
    • Docker Python 官方镜像使用说明(TAG说明)
    • Docker 安装 Python
    • Docker 安装 Redis
    • Docker 安装 Tomcat
    • Docker 安装 Ubuntu
    • Docker 安装 Wordpress
    • Docker 国内镜像加速
    • MacOS Docker 安装
    • Ubuntu Docker 安装
    • Windows Docker 安装
  • manual
    • Docker attach 命令
    • Docker build 命令
    • Docker 清理命令
    • Docker命令大全
    • Docker commit 命令
    • docker-compose-run-command
    • Docker cp 命令
    • Docker create 命令
    • Docker diff 命令
    • Docker rm 命令
    • Docker exec 命令
    • Docker export 命令
    • Docker history 命令
    • Docker images 命令
    • Docker import 命令
    • Docker info 命令
    • Docker inspect 命令
    • Docker kill 命令
    • Docker load 命令
    • Docker login/logout 命令
    • Docker logs 命令
    • Docker network 命令
    • Docker pause/unpause 命令
    • Docker port 命令
    • Docker 常见问题
    • Docker ps 命令
    • Docker pull 命令
    • Docker push 命令
    • Docker rename 命令
    • docker-resources
    • Docker rm 命令
    • Docker rm 命令
    • Docker run 命令
    • Docker save 命令
    • Docker search 命令
    • Docker start/stop/restart 命令
    • Docker stats 命令
    • Docker tag 命令
    • Docker top 命令
    • Docker version 命令
    • Docker version 命令
    • Docker wait 命令
    • diff
      • Docker Compose 和 docker-compose 区别
      • Docker import、export 与 save、load 命令 区别
  • usage
    • Docker docker-compose 使用
    • Docker 容器连接
    • Docker 容器使用
    • Docker Dockerfile Ptyhon实战配置-1
    • Docker Dockerfile Ptyhon实战配置之多阶段构建-2
    • Docker Dockerfile
    • Docker 镜像使用
    • Docker Machine
    • Docker 仓库管理
    • Swarm集群管理
  • assets
    • mysql
      • my.cnf
Powered by GitBook
On this page
  • 1. 查看数据卷详细信息
  • 2. 临时挂载数据卷查看内容
  • 3. 查找哪些容器正在使用数据卷
  • 4. 批量查看数据卷内容的脚本
  • 5. 查看数据卷使用情况
  • 6. 更安全的清理方式
  • 7. 避免future问题的建议
  • 8. 直接在宿主机查看(Linux/Mac)

Was this helpful?

  1. advanced

Docker安全的清理匿名数据卷

在一些场景中,会出现匿名数据卷,仅通过哈希值很难知道内容。以下是几种查看和管理这些数据卷的方法:

1. 查看数据卷详细信息

# 查看所有的数据卷
docker volume ls

# 查看特定数据卷的详细信息 语法:docker volume inspect <volume_name>
docker volume inspect 0c4f810bb132301e6bbedd68f40a28d42970fa7472c5113bcec93f704d4ca136

# 会显示挂载点路径 语法:docker volume inspect <volume_name> | grep Mountpoint
docker volume inspect 0c4f810bb132301e6bbedd68f40a28d42970fa7472c5113bcec93f704d4ca136 | grep Mountpoint

2. 临时挂载数据卷查看内容

# 创建临时容器挂载数据卷来查看内容
docker run --rm -it -v 0c4f810bb132301e6bbedd68f40a28d42970fa7472c5113bcec93f704d4ca136:/data alpine sh

# 进入容器后查看 /data 目录内容
ls -la /data

3. 查找哪些容器正在使用数据卷

# 查看所有容器(包括停止的)及其挂载信息
docker ps -a --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Mounts}}"

# 或者查看详细的挂载信息 语法: docker inspect $(docker ps -aq) | grep -A 10 -B 2 "容器ID"
docker inspect $(docker ps -aq) | grep -A 10 -B 2 "0c4f810bb132"

4. 批量查看数据卷内容的脚本

#!/bin/bash
# 遍历所有数据卷并显示内容概览
for volume in $(docker volume ls -q); do
    echo "=== Volume: $volume ==="
    docker run --rm -v $volume:/data alpine sh -c "ls -la /data | head -10" 2>/dev/null || echo "无法访问此数据卷"
    echo ""
done

5. 查看数据卷使用情况

# 查看哪些数据卷正在被使用
docker system df -v

# 查看数据卷大小
docker run --rm -v 0c4f810bb132301e6bbedd68f40a28d42970fa7472c5113bcec93f704d4ca136:/data alpine du -sh /data

6. 更安全的清理方式

在不确定数据卷内容时,可以这样做:

# 1. 先查看哪些是未使用的数据卷
docker volume ls --filter dangling=true
# docker volume ls -f dangling=false  # 显示被引用的卷

# 2. 逐个检查可疑的数据卷内容
docker run --rm -v <volume_name>:/data alpine ls -la /data

# 3. 确认安全后再删除
docker volume prune -f

7. 避免future问题的建议

# 创建容器时使用命名数据卷
docker run -v my_app_data:/app/data nginx

# 或者使用 docker-compose 明确命名
version: '3'
services:
  app:
    image: nginx
    volumes:
      - app_data:/usr/share/nginx/html
volumes:
  app_data:
    name: my_project_data

8. 直接在宿主机查看(Linux/Mac)

# 在宿主机上直接查看数据卷内容(需要root权限)
sudo ls -la /var/lib/docker/volumes/0c4f810bb132301e6bbedd68f40a28d42970fa7472c5113bcec93f704d4ca136/_data/

通过这些方法,你可以安全地了解这些匿名数据卷的内容,然后决定是否需要保留或删除它们。建议在生产环境中总是使用命名数据卷,这样管理起来会更加方便和安全。

PreviousDocker redis进阶配置NextDocker Bind Mount vs Volume 的区别

Last updated 2 days ago

Was this helpful?

Docker批量查找每个卷对应的容器