Docker 数据卷挂载

目录

  1. 将数据从宿主机挂载到容器中的三种方式
  2. Volume
  3. Bind Mounts

将数据从宿主机挂载到容器中的三种方式

Docker提供三种方式将数据从宿主机挂载到容器中:
• volumes:Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)。保存数据的最佳方式。
• bind mounts:将宿主机上的任意位置的文件或者目录挂载到容器中。
• tmpfs:挂载存储在主机系统的内存中,而不会写入主机的文件系统。如果不希望将数据持久存储在任何位置,可以使用 tmpfs,同时避免写入容器可写层提高性能。
在这里插入图片描述

Volume

案例:两个nginx共享一个数据卷

#创建数据卷
[root@k8s-master ~]# docker volume create nginx_vol
nginx_vol

#查看数据卷
[root@k8s-master ~]# docker volume ls
DRIVER              VOLUME NAME
local               nginx_vol

#查看某数据卷详情
[root@k8s-master ~]# docker volume inspect nginx_vol
[
    {
        "CreatedAt": "2020-06-07T16:54:52+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/nginx_vol/_data",
        "Name": "nginx_vol",
        "Options": {},
        "Scope": "local"
    }
]
挂载的位置  
Mountpoint:/var/lib/docker/volumes/nginx_vol/_data

#创建两个容器指定数据卷
[root@k8s-master ~]# docker run -d -p 80:80 --name mynginx01 --mount src=nginx_vol,dst=/usr/share/nginx/html nginx
80efb55b67c7352aba2acd9a8312678fb7f1de676dfcfc6ea330024f3bdff865


[root@k8s-master ~]# docker run -d -p 81:80 --name mynginx02 --mount src=nginx_vol,dst=/usr/share/nginx/html nginx
a9064351c75c7ef776a4f728160ab875adfff5f7c08aa3a1b53d1f42e97e09ee


#进入挂载的目录下,更新index.html目录
[root@k8s-master ~]# cd /var/lib/docker/volumes/nginx_vol/_data
[root@k8s-master _data]# ll
总用量 8
-rw-r--r--. 1 root root 494 526 23:00 50x.html
-rw-r--r--. 1 root root 612 526 23:00 index.html

在这里插入图片描述

#删除其中一个容器,不影响另一个容器的使用,因为两个容器公用同一份数据,如果不挂载数据卷,每个容器的数据都是独立的,一旦出现容器启动异常,数据拿取失败就得不偿失了.

Bind Mounts

案例与上同理
挂载方式默认是volume,需要指定挂在类型为bind
此挂载方式适合用于产生临时文件场景

注意:

  1. 如果源文件/目录没有存在(src),不会自动创建,会抛出一个错误。
  2. 如果挂载目标在容器中非空目录,则该目录现有内容将被隐藏
[root@k8s-master ~]# docker run -d -p 80:80 --name=nginx-test --mount type=bind,src=/mnt,dst=/usr/share/nginx/html nginx 

总结两种常用数据卷:

Volume特点
• 多个运行容器之间共享数据。
• 当容器停止或被移除时,该卷依然存在。
• 多个容器可以同时挂载相同的卷。
• 当明确删除卷时,卷才会被删除。
• 将容器的数据存储在远程主机或其他存储上
• 将数据从一台Docker主机迁移到另一台时,先停止容器,然后备份卷的目录(/var/lib/docker/volumes/)

Bind Mounts特点
• 从主机共享配置文件到容器。默认情况下,挂载主机/etc/resolv.conf到每个容器,提供DNS解析。
• 在Docker主机上的开发环境和容器之间共享源代码。例如,可以将Maven target目录挂载到容器中,每次在Docker主机 上构建Maven项目时,容器都可以访问构建的项目包。
• 当Docker主机的文件或目录结构保证与容器所需的绑定挂载一致时

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值