多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
**匿名挂载** : -v 只写了容器内的路径,没有写容器外的路径,也没有定义具体的名字。 ``` // 启动nginx -P 随机指定端口 、--name取名为 nginx01 、-v 只写容器内的路径 :/etc/nginx [root@iZbp1bum6107bp8mgzkeunZ ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx 50a5fb5bf4c986e836ca21056590c35c938901bc90fe17f9fd60718a6ad3b667 [root@iZbp1bum6107bp8mgzkeunZ ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 50a5fb5bf4c9 nginx "/docker-entrypoint.…" 30 seconds ago Up 29 seconds 0.0.0.0:49153->80/tcp nginx01 be2efba8b54c mysql:5.7 "docker-entrypoint.s…" 2 days ago Up 2 days 33060/tcp, 0.0.0.0:3310->3306/tcp docker_mysql5.7 [root@iZbp1bum6107bp8mgzkeunZ ~]# docker volume ls DRIVER VOLUME NAME local 63f7d44eb9c0659b18a4e57099e2757e539c1491f92b5f2e94db8843e769c80a local 359b3956007658d7934b448e295b093c4e12561979ac9fdacf057bfd2ffa2f20 local 758417410b4c4a48ef98a709f11f56a78519d7a006ccb065e1b31bb6c9ec7335 ``` 通过 docker volume ls 查看卷的情况,发现volume name 的值都是随机数的值,这种就是匿名挂载。 **具名挂载**:-v 卷名:容器内路径 通过具名挂载,可以快速定位到目标卷的位置。 ``` // 启动nginx -P 随机指定端口 、--name取名为 nginx02 、-v 自定义名字( juming-nginx) :/etc/nginx [root@iZbp1bum6107bp8mgzkeunZ ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx 2688e406fd28da4daf3e9899d42e16081ee6942525796e0567105dbb184367f8 [root@iZbp1bum6107bp8mgzkeunZ ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2688e406fd28 nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 0.0.0.0:49154->80/tcp nginx02 50a5fb5bf4c9 nginx "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 0.0.0.0:49153->80/tcp nginx01 be2efba8b54c mysql:5.7 "docker-entrypoint.s…" 2 days ago Up 2 days 33060/tcp, 0.0.0.0:3310->3306/tcp docker_mysql5.7 [root@iZbp1bum6107bp8mgzkeunZ ~]# docker volume ls DRIVER VOLUME NAME local 63f7d44eb9c0659b18a4e57099e2757e539c1491f92b5f2e94db8843e769c80a local 359b3956007658d7934b448e295b093c4e12561979ac9fdacf057bfd2ffa2f20 local 758417410b4c4a48ef98a709f11f56a78519d7a006ccb065e1b31bb6c9ec7335 local juming-nginx ``` 通过 docker volume ls 查看卷的情况,发现volume name 的值是juming-nginx,这种就是具名挂载。 **查看卷位置**:docker volume inspect 卷名 所有docker容器内的卷,没有指定目录情况下,都是在`/var/lib/docker/volumes/卷名/_data` 目录下。 ``` [root@iZbp1bum6107bp8mgzkeunZ ~]# docker volume inspect juming-nginx [ { "CreatedAt": "2022-04-09T21:01:30+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data", // 挂载的宿主机目录 "Name": "juming-nginx", "Options": null, "Scope": "local" } ] [root@iZbp1bum6107bp8mgzkeunZ ~]# docker volume inspect 63f7d44eb9c0659b18a4e57099e2757e539c1491f92b5f2e94db8843e769c80a [ { "CreatedAt": "2022-04-09T20:54:57+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/63f7d44eb9c0659b18a4e57099e2757e539c1491f92b5f2e94db8843e769c80a/_data", "Name": "63f7d44eb9c0659b18a4e57099e2757e539c1491f92b5f2e94db8843e769c80a", "Options": null, "Scope": "local" } ] ``` **如何区别具名挂载、匿名挂载、指定路径挂载?** ``` -v 容器内路径 // 匿名挂载 -v 卷名:容器内路径 // 具名挂载 -v 宿主机路径:容器内路径 // 指定路径挂载 ``` **扩展:** ``` // 通过 -v 容器内路径: ro rw 改变读写权限 // ro readonly 只读;说明这个路径只能通过宿主机来操作,容器内部是无法操作的 // rw readwrite 读写;默认 docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx ```