简介:在Docker中,数据卷容器挂载的数据卷位于宿主机的/var/lib/docker/volumes目录下。具体路径为/var/lib/docker/volumes/<数据卷名称>/_data。数据卷会自动创建,并且如果数据卷中没有文件,容器中的文件将会被挂载到数据卷中,如果数据卷中有文件,则容器中的文件将会覆盖数据卷中的文件。
在Docker中,数据卷容器挂载的数据卷位于宿主机的/var/lib/docker/volumes目录下。具体路径为/var/lib/docker/volumes/<数据卷名称>/_data。数据卷会自动创建,并且如果数据卷中没有文件,容器中的文件将会被挂载到数据卷中,如果数据卷中有文件,则容器中的文件将会覆盖数据卷中的文件。
在Docker中,容器的数据读写默认发生在容器的存储层,当容器被删除时其上的数据将会丢失。要想实现数据的持久化,需要将数据从宿主机挂载到容器中。目前Docker提供了三种方式将数据从宿主机挂载到容器中:
数据卷挂载:将宿主机上的数据卷挂载到容器中的目录中,由Docker管理数据卷目录的位置在/var/lib/docker/volumes中。使用-v参数进行挂载,格式为<宿主机数据卷名称>:<容器内目录绝对路径>。例如:docker run —name nginx-contain -p 80:80 -v html:/usr/share/nginx/html -d nginx。宿主机数据卷自动创建到/var/lib/docker/volumes/html/_data目录下,可用命令docker volume inspect <数据卷名>查看路径。
绑定挂载:将宿主机的目录直接挂载到容器中,使用-v参数进行挂载,格式为<宿主机目录>:<容器内目录绝对路径>。例如:docker run —name nginx-contain -p 80:80 -v /宿主机上的html:/usr/share/nginx/html -d nginx。宿主机上的html目录将会被挂载到容器的/usr/share/nginx/html目录下。
匿名挂载:不指定数据卷名称和容器内目录绝对路径,直接使用-v参数进行挂载,格式为<宿主机目录>:<容器内目录绝对路径>。例如:docker run —name nginx-contain -p 80:80 -v /宿主机上的html:/usr/share/nginx/html -d nginx。宿主机上的html目录将会被挂载到容器的/usr/share/nginx/html目录下,并且自动创建名为html的数据卷。
在实际应用中,可以根据需求选择不同的挂载方式。其中,数据卷挂载和匿名挂载适合需要持久化存储数据的场景,而绑定挂载适合临时共享宿主机的文件或目录的场景。