实战案例:命名数据卷

创建命名数据卷

[root@ubuntu2404 ~]#docker volume create vol1
vol1
[root@ubuntu2404 ~]#docker volume ls
DRIVER    VOLUME NAME
local     vol1
[root@ubuntu2404 ~]#docker inspect vol1 
[
    {
        "CreatedAt": "2025-08-09T11:46:08+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/vol1/_data",
        "Name": "vol1",
        "Options": null,
        "Scope": "local"
    }
]

使用命名数据卷创建容器

[root@ubuntu2404 ~]#docker run -d -p 80:80 --name nginx -v vol1:/usr/share/nginx/html nginx:1.26 
44dc792be7eb32d8f8f128bf314b64decfec5251d783e0cf08dc1efe44251e6a
[root@ubuntu2404 ~]#curl 127.0.0.1:80
<!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     vol1

#查看命名数据卷详解信息
[root@ubuntu2404 ~]#docker volume inspect vol1 
[
    {
        "CreatedAt": "2025-08-09T11:46:08+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/vol1/_data",
        "Name": "vol1",
        "Options": null,
        "Scope": "local"
    }
]
[root@ubuntu2404 ~]#docker inspect --format="{{.Mounts}}" nginx
[{volume vol1 /var/lib/docker/volumes/vol1/_data /usr/share/nginx/html local z true }]

#查看命名数据卷的文件
[root@ubuntu2404 ~]#ls /var/lib/docker/volumes/vol1/_data/
50x.html  index.html

#修改宿主机命名数据卷的文件
[root@ubuntu2404 ~]#echo nginx vol1> /var/lib/docker/volumes/vol1/_data/index.html
[root@ubuntu2404 ~]#curl 127.0.0.1:80
nginx vol1

#利用现在的命名数据卷再创建新容器,可以和原有容器共享同一个命名数据卷的数据
[root@ubuntu2404 ~]#docker run -d -p 81:80 --name nginx1 -v vol1:/usr/share/nginx/html nginx:1.26 
641254b556d667601c9423b10bbe43a8202837c2b3c47a0d5d0b5bbfdb93a259
[root@ubuntu2404 ~]#curl 127.0.0.1:81
nginx vol1

创建容器时自动创建命名数据卷

#创建容器自动创建命名数据卷
[root@ubuntu2404 ~]#docker run -d -p 82:80 --name nginx2 -v vol2:/usr/share/nginx/html nginx:1.26 
40c04e3b11e23808e835c6c76cdf56912524aac5ed32054082b241d0c0295dfa
[root@ubuntu2404 ~]#docker volume ls
DRIVER    VOLUME NAME
local     vol1
local     vol2

删除数据卷

#删除指定的命名数据卷
[root@ubuntu2404 ~]#docker volume rm vol1

#清理全部不再使用的卷
[root@ubuntu2404 ~]#docker volume prune -f

实战案例:实现 wordpress 持久化

[root@ubuntu2404 ~]#docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wordpress -e MYSQL_PASSWORD=123456 --name mysql -d -v /data/mysql:/var/lib/mysql --restart=always mysql:8.0.29-oracle

[root@ubuntu2404 ~]#docker run -d -p 80:80 --name wordpress -v /data/wordpress:/var/www/html --restart=always wordpress:php7.4-apache

#注意:数据库服务器的地址要输入宿主机的IP

更多推荐