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,就说明这个路径只能通过宿主机来修改,容器内部无法操作!

原文地址:https://www.cnblogs.com/yangzp/p/14335648.html