docker文件挂载

本文详细介绍了Docker中数据卷挂载的四种方式:匿名挂载、具名挂载、指定目录挂载以及只读/读写模式。通过实例展示了如何映射宿主机与容器之间的文件系统,并讨论了不同挂载模式下容器对宿主机目录的访问权限。这对于Docker容器的数据持久化和管理至关重要。
摘要由CSDN通过智能技术生成

1、docker匿名挂载

#本次使用镜像为nginx镜像
#-v指定映射文件 /aaa/为容器里的目录
# -id 后台运行 -it 前台运行
docker run -id -v :/aaa/ --name nginx nginx:v1
106f34d33b6f03d82c870aa445e292cb38812a6ef96af66581e12ad868c7b9a5
#查看容器的具体信息
docker inspect nginx
#匿名映射在宿主的信息
"Mounts": [
            {
                "Type": "volume",
                #名字
                "Name": "43a477d21460df2618a6f5a561a006f5eabdd0d6f5978615429c0d9ae277a144",
                "Source": 
                #位置                "/var/lib/docker/volumes/43a477d21460df2618a6f5a561a006f5eabdd0d6f5978615429c0d9ae277a144/_data",
 "Destination": "/aaa", #映射的文件信息
 
 #在宿主机查看映射目录
 [root@#localhost ~]# cd /var/lib/docker/volumes/43a477d21460df2618a6f5a561a006f5eabdd0d6f5978615429c0d9ae277a144/_data
[root@#localhost _data]# ll
总用量 0

#在容器中查看映射信息
[root@#localhost ~]# docker exec -it nginx /bin/bash
root@106f34d33b6f:/# cd /aaa/
root@106f34d33b6f:/aaa# ls

#在宿主机或者容器中创建一个文件 并查看 容器或者宿主机的映射目录的情况
#映射关系是相互的
root@106f34d33b6f:/aaa# touch aaa.Txt     #容器创建
root@106f34d33b6f:/aaa# ls
aaa.Txt
[root@#localhost _data]# ll    #宿主机查看
总用量 0
-rw-r--r-- 1 root root 0 917 17:04 aaa.Txt

2、具名挂载

#创建具名挂载
docker run -id -v test:/aaa/ --name nginx nginx:v1
e0a2222d6aba1959359c11d749c57810def30091ce77d4a047a1d1e2ae9cb576
#查看 volume 数据卷信息
docker volume ls
DRIVER    VOLUME NAME
local     2a1e9c8a211bf7e584af0361e42d63cbe7a5e6399c7a5ca3c33f8ccca409164c
local     43a477d21460df2618a6f5a561a006f5eabdd0d6f5978615429c0d9ae277a144
local     62a2d7c4da567923bb56abe19f5b2d564db02da5566830f2ea7b3ff359631516
local     76da52fa23e28944e50e5f9484de21ab36609d539edea9b4ad8c598d87ef2e88
local     803e988df479210c9c44ab272bb8f76da5fe635398fb41ba9982b8db5f968a24
local     1665b16e0ae8d34adb91d1bd118cf6bf5eaf943da374aeb6ee63f51f7d51d464
local     test #映射文件名称

#目录的具体信息
[root@#localhost ~]# cd /var/lib/docker/volumes/
[root@#localhost volumes]# ll
总用量 0
drwx-----x 3 root root 19 917 17:12 test

3、指定目录挂载

#创建指定目录挂载 /root/testng/宿主机目录:/aaa/nginx/容器目录
docker run -id -v /root/testng/:/aaa/nginx --name nginx nginx:v1
5f9a9aac3955634ce4c208a5ec9fe266b41f1d0bb458ce20f5bde277167d11c5
cd /root/testng/
[root@#localhost testng]# ls
[root@#localhost testng]# touch b.txt

[root@#localhost ~]# docker exec -it nginx /bin/bash
root@5f9a9aac3955:/aaa/nginx# ls
b.txt

4、只读/读写模式

#容器只读模式 容器只能读取映射宿主的挂载目录 并不能在挂载目录里创建新的文件
[root@#localhost testng]# docker run -di -v /root/testng/:/abc/:ro --name nginx nginx:v1 
c1b7e24d1b88b6d1ee2fb1daaeb49db1499a73cc01fb4961aad8a4c3ac10477b
[root@#localhost ~]# docker exec -it nginx /bin/bash
root@c1b7e24d1b88:/# cd /abc/
root@c1b7e24d1b88:/abc# touch aa.xtx
touch: cannot touch 'aa.xtx': Read-only file system

#容器读写模式  不指定的话默认就是是双向的
[root@#localhost testng]# docker run -di -v /root/testng/:/abc/:rw --name nginx nginx:v1 
472a8fedd8c948af24bea0641ede5e51de5b5eaccd56cdd6b6f4440f9c8c18c8

5、–volumes-from 继承容器的挂载目录

# --volumes-from nginx 指定要继承的容器名字
[root@#localhost testng]# docker run -di --volumes-from nginx --name nginx01 nginx:v1
918e4b61966f2beb8fbeb23cc7ff7ba8628caf72d9c53bda7e8f8f35c1672814
# --volumes-from nginx 指定要继承的容器名字 并且为只读模式
[root@#localhost testng]#  docker run -di --volumes-from nginx:ro --name nginx02 nginx:v1
b6eda7d2a13d57528bda5b5e8e81e1912b201c715c1169955651b36cae21ac39

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值