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
posted @ 2021-06-21 11:12  路过的柚子厨  阅读(93)  评论(0编辑  收藏  举报