程序员社区

Docker具名挂载和匿名挂载

Docker具名挂载和匿名挂载

  • 结论
  • 1、匿名挂载
  • 2.具名挂载
  • ro和rw

结论

匿名挂载:卷挂载只写容器里面的路径,不写容器外的路径

如何确定是匿名挂载还是具名挂载,还是指定路径挂载

-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主内路径:容器内路径 #指定路径挂载


1、匿名挂载

# docker run -d -P --name nginx01 -v /etc/nginx nginx
 
//端口映射-p(小写)、-P(大写)区别
-p指定要映射的端口,一个指定端口上只可以绑定一个容器
-P将容器内部开放的网络端口随机映射到宿主机的一个端口上,即对外开放的端口是随机的

查看所有volume情况

# docker volume ls
DRIVER              VOLUME NAME
local               4a3daf61b2e4f14edd92eaf84515b82ac863ca945497b5a71642506b88cfea49
local               78a889203c9cd658a64b6bf25870bea2a25a11e127aa48b027d0750f44a7cc78
local               2985c543eadf37ced04f451c8bd056df2032518eab3dc1e00c24766ac2aaf8b5
local               c0cf9727552b0df0ebd88919cab016730450a3a1a31f48905c7b88cf2152dd36
local               c00400d2fea2d074078b8f20d03c111df306beb6385aeed2d86a101e3b3bfe72
local               ce7cc5dac50c58ff44a5f13f84d00e2100fadbcf1fea2788b334854f2e4c1080
local               ffe9eafba04a7e2ae4d7e12f1049c47f041a3d6b0eb6bcfa4734f08184cfb460

这里发现,这种就是匿名挂载,我们在-v 只写了容器内的路径,没有写容器的路径!


2.具名挂载

具名挂载:就是挂载的卷定义一个自己的名字,可以方便的查找

# docker run -d -P --name nginx02 -v Bertram:/etc/nginx nginx
# docker volume ls
DRIVER              VOLUME NAME
.....
local               Bertram

查看卷所对应的路径

# docker volume inspect Bertram
[
    {
        "CreatedAt": "2020-10-19T15:24:58+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/data/docker/volumes/Bertram/_data",
        "Name": "Bertram",
        "Options": null,
        "Scope": "local"
    }
]

所有的docker容器内的卷,没有指定目录的情况下都是在 '/data/docker/volumes’目录下

这里默认的存储路径是修改过的,如何修改大家可以参考这篇文章

我们通过具名挂载以方便的找到我们的一个卷,大多数使用的都是具名挂载。


ro和rw

# 通过 -v 容器内路径,ro rw改变读写权限
ro readonly  #只读
rw readwrite #可读可写
 
# 一旦这个设置了容器权限,容器对我们挂载出来的内容就有了限定
docker run -d -P --name nginx02 -v Bertram:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v Bertram:/etc/nginx:rw nginx
# 只要看到ro就说明这个路径只能通过宿主机来操作,容器内无法操作。

赞(0) 打赏
未经允许不得转载:IDEA激活码 » Docker具名挂载和匿名挂载

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区