数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:
数据卷可以在容器之间共享和重用- 对
数据卷的修改会立马生效 - 对
数据卷的更新,不会影响镜像 数据卷默认会一直存在,即使容器被删除
注意:
数据卷的使用,类似于 Linux 下对目录或文件进行 mount,镜像中的被指定为挂载点的目录中的文件会复制到数据卷中(仅数据卷为空时会复制)。
匿名绑定
使用sudo docker run --rm --name nginx_volume -d -p 80:80 -v /usr/share/nginx/html nginx命令运行容器。
容器中的/usr/share/nginx/html目录会被映射到宿主机中,使用sudo docker inspect nginx_volume查看文件夹被映射的地址

这里进入这个文件夹时会提示没有权限,使用sudo cd后会出现下面的报错
1 | |
解决方法:使用sudo -i使用root身份进入,退出时使用exit或Ctrl+D即可。

更改index.html后,显示内容也改变了。

注意:匿名绑定的volume会在容器删除时自动删除。匿名绑定只起到和主机共享文件夹的作用,不能持久化保存数据

具名绑定
sudo docker run --rm -d -P -v nginx_volume:/usr/share/nginx/html --name nginx_v nginx
和匿名绑定相比,只需在-v 指定路径前加上volume的名字即可。
使用sudo docker volume ls查看volume
1 | |
使用sudo docker inspect nginx_v,即可查看映射的地址
1 | |
在Source路径下修改内容,Destination中的内容也会相应改变。

删除容器后volume并不会跟着一起删除

想要删除volume可以使用sudo docker volume rm nginx_volume进行删除
1 | |
bind mount
使用bind mount 可以将主机中的文件夹映射到容器中
sudo docker run -d -P --name nginx_vv -v ~/www/test:/usr/share/nginx/html nginx

删除容器并不会删除主机中这个目录