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. 查看完整的挂载信息
  • jq 命令安装
  • 2. 查看 Binds 和 Mounts 信息
  • 3. 使用 jq 格式化输出
  • 4. 直接查看容器使用的数据卷(推荐) ⭐️⭐️⭐️⭐️⭐️
  • 可能的情况
  • 验证方法

Was this helpful?

  1. advanced

Docker inspect 查看容器、镜像的高级用法

1. 查看完整的挂载信息

# 查看完整的挂载信息(JSON 格式)
docker inspect mysql --format='{{json .Mounts}}' | jq .

# 如果没有 jq,使用原生输出,只查看挂载部分
docker inspect mysql | grep -A 30 '"Mounts"'

jq 命令安装

系统类型
安装命令

Ubuntu/Debian

sudo apt-get update && sudo apt-get install -y jq

CentOS/RHEL

sudo yum install -y epel-release && sudo yum install -y jq

Alpine

apk add jq

Arch Linux

pacman -S jq

macOS

brew install jq

Windows

2. 查看 Binds 和 Mounts 信息

# 查看 HostConfig 中的 Binds
docker inspect mysql --format='{{json .HostConfig.Binds}}'

# 查看 Bind mount
docker container inspect mysql --format='{{range .Mounts}}{{if eq .Type "bind"}}Bind: {{.Source}} -> {{.Destination}}{{end}}{{end}}'

# 查看 Mounts 信息(推荐)
docker inspect mysql --format='{{json .Mounts}}'

3. 使用 jq 格式化输出

# 格式化显示挂载信息
docker inspect mysql | jq '.[0].Mounts'

# 只显示数据卷相关信息
docker inspect mysql | jq '.[0].Mounts[] | select(.Type=="volume")'

4. 直接查看容器使用的数据卷(推荐) ⭐️⭐️⭐️⭐️⭐️

特别适合:在清理数据卷的情况下,非常有用的命令

# 查看容器的数据卷使用情况
docker container inspect mysql --format='{{range .Mounts}}{{if eq .Type "volume"}}Volume: {{.Name}} -> {{.Destination}}{{end}}{{end}}'

MySQL 容器通常会创建匿名数据卷来存储数据库文件,挂载点通常是 /var/lib/mysql。执行上述命令后,你应该能看到类似这样的输出:

[
  {
    "Type": "volume",
    "Name": "67a1378c2926d63282efd949d05e7987f30cebca3c737c21937c792029dc676e",
    "Source": "/var/lib/docker/volumes/67a1378c2926d63282efd949d05e7987f30cebca3c737c21937c792029dc676e/_data",
    "Destination": "/var/lib/mysql",
    "Driver": "local",
    "Mode": "",
    "RW": true,
    "Propagation": ""
  }
]

其中 "Name" 字段就是你要找的匿名数据卷 ID。

请执行上述命令之一来获取完整的挂载信息,这样就能确定这个 MySQL 容器使用的具体是哪个匿名数据卷了。

如果执行输出为空说明这个 MySQL 容器可能没有使用数据卷,或者使用的是 bind mount 而不是 volume。

可能的情况

情况1:使用了 bind mount 如果 MySQL 容器是这样启动的:

docker run -v /host/path:/var/lib/mysql mysql

情况2:没有持久化存储 如果 MySQL 容器启动时没有指定任何卷:

docker run mysql

这种情况下,数据会存储在容器的可写层中,容器删除后数据就丢失了。

情况3:使用了匿名卷但检测不到 有时候镜像本身定义了 VOLUME,但可能在检查时显示不正确。

验证方法

# 1. 查看容器是否有数据持久化
docker exec mysql ls -la /var/lib/mysql

# 2. 查看镜像的 Dockerfile 中是否定义了 VOLUME
docker image inspect mysql | grep -i volume

# 3. 查看容器的完整信息
docker inspect mysql > mysql_inspect.json

、

PreviousDocker inspect 检测所有容器挂载状态的脚本NextDocker Jenkins进阶配置

Last updated 2 days ago

Was this helpful?

从 下载二进制文件

jq 官网