数据卷
是一个可供一个或多个容器使用的特殊目录,它绕过 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
删除容器并不会删除主机中这个目录