docker具名和匿名挂载
匿名挂载
匿名挂载不指定容器外路径
-v 容器内路径
[root@iZmu0fa4hv0jwzZ ~]# docker run -d -p 3345:8080 --name nginx02 -v /etc/nginx nginx 1a7c1711f9bb7fb4b9cb387a6ac2686bf7e90f81d67e7aa8591abf76b25fbede
查看本地的容器卷
[root@iZmu0fa4hv0jwzZ ~]# docker volume ls
DRIVER VOLUME NAME
local 5306f0e877e1194f11f542eec4c3f670b41c70fe3461e00563d5613c4708cb9a
这种就是匿名挂载,我们在-v只写了容器内的路径,没写容器外的路径
具名挂载
给容器卷加上具体的名字
-v 卷名:容器内路径 [root@iZmu0fa4hv0jwzZ ~]# docker run -d -p 3346:8080 --name nginx03 -v juming-nginx:/etc/nginx nginx 8ed06658020c4d0854bca7a709a6f91574c191939c27b6ad15a926790491bcde [root@iZmu0fa4hv0jwzZ ~]# docker volume ls DRIVER VOLUME NAME local 5306f0e877e1194f11f542eec4c3f670b41c70fe3461e00563d5613c4708cb9a local juming-nginx
通过docker volume查看具名路径
[root@iZmu0fa4hv0jwzZ ~]# docker volume inspect juming-nginx [ { "CreatedAt": "2021-06-21T10:54:26+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data", "Name": "juming-nginx", "Options": null, "Scope": "local" } ]
所有的docker容器内的卷,没有指定目录的情况下都是在 /var/lib/docker/volumes/卷名/_data 之下
进入目录查看
[root@iZmu0fa4hv0jwzZ ~]# cd /var/lib/docker [root@iZmu0fa4hv0jwzZ docker]# ls buildkit containers image network overlay2 plugins runtimes swarm tmp trust volumes
[root@iZmu0fa4hv0jwzZ docker]# cd volumes/
[root@iZmu0fa4hv0jwzZ volumes]# ls
5306f0e877e1194f11f542eec4c3f670b41c70fe3461e00563d5613c4708cb9a backingFsBlockDev juming-nginx metadata.db
我们通过具名挂载可以方便地找到我们的一个卷,大多数情况使用的都是具名挂载
如何确定是具名挂载还是匿名挂载,还是指定路径挂载
-v 容器内路径 #匿名挂载 -v 卷名:容器内路径 #具名挂载 -v 宿主机路径:容器内路径 #指定路径挂载
拓展
通过 -v 容器内路径:ro rw改变读写权限
ro readonly #只读 这个路径只能通过宿主机来操作,容器内部无法操作
rw readwrite #可读可写
#一旦设置了容器权限,容器对我们挂载出来的内容就有限定了
docker run -d -p 3346:8080 --name nginx03 -v juming-nginx:/etc/nginx:ro nginx docker run -d -p 3346:8080 --name nginx03 -v juming-nginx:/etc/nginx:rw nginx