Docker数据卷挂载

157 阅读2分钟

1、什么是数据卷?

数据卷(Volume)是一个虚拟目录,是容器内目录和宿主机目录之间映射的桥梁。数据卷本身是虚拟的,但是都对应了宿主机的一个目录和容器内的目录,数据卷二者之间沟通的一个媒介,可能就是宿主机目录内容改变时,会把内容同步到数据卷,然后数据卷再把信息同步到容器内目录,反之亦然。

2、为什么需要数据卷?

以Nginx为列,当我们需要修改html目录下html文件或者conf文件的时候,我们使用docker exec -it mynginx bash,进入到bash命令行后,按照以往的经验我们使用vim/vi 去编辑对应文件的时候,发现会提示not command。这是因为在nginx镜像内,虽然提供了一些系统函数和bash环境,但也只是提供了,nginx必须的一些函数或者命令。不会像在linux系统下,提供所有的系统环境。所以此时,我们需要通过数据卷来完成容器内目录和宿主机目录的映射绑定,一旦建立了绑定关系,二者目录的任何修改都将会同步,因为这是一个双向绑定。此时我们便可以进入到宿主机目录下,轻松的使用宿主机系统下的环境对文件进行修改。

3、如何挂载数据卷?

可以通过docker run命令,在创建容器的时候使用-v [数据卷]:[容器内目录] 创建数据卷。 其中容器内目录,可以在nginx对应的docker仓库文档里查找到。数据卷的名称自己命名,一般就是和需要挂载的容器目录同名便可。如果宿主机没有指定目录,那么会自动创建一个目录,该目录有默认位置,并且名称和数据卷一样。

docker run -d --name nginxtest -p 80:80 -v html:/usr/share/nginx/html nginx:latest

宿主机(Linux系统)挂载的对应数据卷所产生的目录默认在:var/lib/docker/volumes

4、数据卷常用命令

  • docker volume create 创建数据卷
  • docker volume ls 查看所有数据卷
  • docker volume rm 删除指定数据卷
  • docker volume inspect 查看某个数据卷详情
  • docker volume prune 清除数据卷