Docker中的数据可以存储在类似于虚拟机磁盘的介质中,在Docker中称为数据卷(Data Volume)。
数据卷可以将本地的磁盘数据和docker容器链接起来,使用容器的应用加载本地的数据,这样就很方便我们的开发。
而且可以保持数据持久化,当将容器删除时,数据不会丢失。
命令使用说明:
$ sudo docker volume --help
Usage: docker volume COMMAND
Manage volumes
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes
Run 'docker volume COMMAND --help' for more information on a command.
下面开始实践下.
使用命令:
$ docker volume create wincom-node
创建一个数据卷,然后使用命令查看下数据卷的信息:
$ sudo docker inspect wincom-node
结果如下:
其中挂载点是指本地host的路径,我们可以查看一下:
使用命令:
$ docker volume rm wincom-node
再来查看下是否删除:
使用以下命令也可以查看数据卷:
# docker volume ls
执行效果:
有了数据卷之后,我们把他和容器关联起来:
$ docker run -d -it --name=volume-nginx -p 8800:80 -v wincom-node:/usr/share/nginx/html nginx
创建一个新的容器,-v代表挂载数据卷。
我们来看下本地host的挂载点:
$ sudo ls -al /var/lib/docker/volumes/wincom-node/_data
如下信息:
可以看到多了两个文件。
我们启动容器,然后进入容器中的目录/usr/share/nginx/html
看一下:
尝试在host本地修改下index.html文件:
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>hello world</h1>
</body>
</html>
我们重启服务,然后在浏览器输入127.0.0.1:8800
(才发现前面端口写错了。。。应该是8080):
执行结果: