Docker 具名和匿名挂载

一、匿名挂载

1.启动一个nginx 容器

语法格式:

-v   容器内路径!

[root@yang ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx
328790a86f3b5956dabb636c02f8c006ec3c9688eda97dc66c2dd0e82b7855c

2.查看所有 volume 的情况

[root@yang ~]# docker volume ls
DRIVER              VOLUME NAME
local               4dcdd5b0a408438d90683df372cbc31f0fc48497c4252f61cf9d9c2a03747c01

以上匿名挂载的卷,就由系统随机生成一个乱码式的卷名,如上!

3.这里发现,这种就是匿名挂载,在 -v 的时候只加容器内路径,没有加容器外路径!

二、具名挂载

1.重新启动一个nginx 容器

语法格式:

-v  卷名:容器内路径

注:卷名前面不加路径/

[root@yang ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
00a30275a6db4650fb84915fdb725ec83815353aea7c913d61b319fa8e01074

2.查看所有 volume 的情况

[root@yang ~]# docker volume ls
DRIVER              VOLUME NAME
local               4dcdd5b0a408438d90683df372cbc31f0fc48497c4252f61cf9d9c2a03747c01
local               juming-nginx

3.查看具名卷的信息

复制代码
[root@yang ~]# docker volume inspect juming-nginx
[
    {
        "CreatedAt": "2021-01-27T15:54:14+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/xxx/_data”目录下。    # xxx为启动容器时设置的卷名

# 进入具名挂载的目录查看卷内的数据,可以看到nginx的配置文件存在!

[root@yang ~]# cd /var/lib/docker/volumes/juming-nginx/_data/
[root@yang _data]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf

!!!具名挂载可以方便找到一个卷,大多数情况下,推荐使用【具名挂载】

三、如何确定是匿名挂载,具名挂载,或者是指定路径挂载?

-v   容器内路径          # 匿名挂载

-v   卷名:容器内路径       # 具名挂载

-v   / 宿主机目录:容器内目录   # 指定路径挂载

四、拓展

1.通过 -v 容器内路径,ro rw 改变容器内权限

ro    readonly   # 只读

rw    readwrite    # 可读可写

2.一旦设置了容器内权限,容器对我们挂在出来的内容就有限定了

[root@yang _data]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
[root@yang _data]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx

3. ro 只要看到ro,就说明这个路径只能通过宿主机来修改,容器内部无法操作!

 

posted @   西瓜君~  阅读(418)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示