在本篇博客文章中,我们将探讨 Docker 中匿名数据卷的使用方法。匿名数据卷是 Docker 提供的一种快速实现数据持久化的方式,尤其适合临时存储应用数据而不必担心清理和管理的问题。
什么是匿名数据卷?
匿名数据卷是一种没有指定名称的数据卷,Docker 会为它们自动生成一个唯一的名称。与命名数据卷相比,匿名数据卷不会自动被其他容器发现或重用,因此非常适合用于需要短期存储的应用场景。一旦关联的容器被删除,匿名数据卷通常也会被自动清理(除非特别配置)。
实战案例:匿名数据卷
bash
[root@ubuntu2404 ~]#docker volume ls
DRIVER VOLUME NAME
[root@ubuntu2404 ~]#docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
#利用匿名数据卷创建容器
[root@ubuntu2404 ~]#docker run -d -p 80:80 --name nginx -v /usr/share/nginx/html nginx:1.26
34851b5dfac7139444067d8c1fd2f812a7f55815fb0d4bb33d286cf99d6d9d45
[root@ubuntu2404 ~]#curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
#查看自动生成的匿名数据卷
[root@ubuntu2404 ~]#docker volume ls
DRIVER VOLUME NAME
local 9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d
#查看匿名数据卷的详细信息
[root@ubuntu2404 ~]#docker inspect 9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d
[
{
"CreatedAt": "2025-08-09T09:51:23+08:00",
"Driver": "local",
"Labels": {
"com.docker.volume.anonymous": ""
},
"Mountpoint": "/var/lib/docker/volumes/9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d/_data",
"Name": "9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d",
"Options": null,
"Scope": "local"
}
]
[root@ubuntu2404 ~]#docker inspect --format="{{.Mounts}}" nginx
[{volume 9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d /var/lib/docker/volumes/9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d/_data /usr/share/nginx/html local true }]
#查看匿名数据卷的文件
[root@ubuntu2404 ~]#ls /var/lib/docker/volumes/9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d/_data/
50x.html index.html
#修改宿主机中匿名数据卷的文件
[root@ubuntu2404 ~]#echo Anonymous Volume >/var/lib/docker/volumes/9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d/_data/index.html
[root@ubuntu2404 ~]#curl 127.0.0.1
Anonymous Volume
#删除容器不会删除匿名数据卷
[root@ubuntu2404 ~]#docker rm -f nginx
nginx
[root@ubuntu2404 ~]#docker volume ls
DRIVER VOLUME NAME
local 9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d
[root@ubuntu2404 ~]#docker run -d -p 80:80 -v /usr/share/nginx/html --name nginx nginx:1.26
0b298859ea2bf81e347fca05d72c1986b8df336d11619fa81329f888be431b18
[root@ubuntu2404 ~]#cat /var/lib/docker/volumes/9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d/_data/index.html
Anonymous Volume
[root@ubuntu2404 ~]#docker volume ls
DRIVER VOLUME NAME
local 9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d
local e568cc1b396a3cb0798a7aa8d01fe6de323d2925edb6d3f97b395f801ffc0c3e
#删除匿名数据卷
[root@ubuntu2404 ~]#docker volume rm 9944eebf8b7a11209111e403da8d3094a35f39afe6e1ad72cfc2c8a9b624431d
[root@ubuntu2404 ~]#docker volume ls
DRIVER VOLUME NAME
local e568cc1b396a3cb0798a7aa8d01fe6de323d2925edb6d3f97b395f801ffc0c3e
结论
匿名数据卷为开发者提供了一种简便的方式来实现数据持久化,特别是在处理临时数据时显得尤为方便。通过本次实战指南,希望你能够更好地理解匿名数据卷的工作原理及其应用场景。开始实践吧,探索更多关于 Docker 数据管理的可能性!