08-Docker容器数据持久化
Docker容器数据持久化存储机制
一、Docker容器数据持久化存储介绍
物理机或虚拟机数据持久化存储
- 由于物理机或虚拟机本身就拥有大容量的磁盘,所以可以直接把数据存储在物理机或虚拟机本地文件系统中,亦或者也可以通过使用额外的存储系统(NFS、GlusterFS、Ceph等)来完成数据持久化存储。
Docker容器数据持久化存储
- 由于Docker容器是由容器镜像生成的,所以一般容器镜像中包含什么文件或目录,在容器启动后,我们依旧可以看到相同的文件或目录。
- 由于Docker容器属于“用后即焚”型计算资源,因此Docker容器不适合做数据持久化存储
二、Docker容器数据持久化存储方式
Docker提供三种方式将数据从宿主机挂载到容器中:
- docker run -v
- 运行容器时,直接挂载本地目录至容器中
- volumes
- Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)
- 是Docker默认存储数据方式
- bind mounts
- 将宿主机上的任意位置文件或目录挂载到容器中
三、Docker容器数据持久化存储方式应用案例演示
3.1 docker run -v
3.1.1 未挂载本地目录
powershell
运行一个容器,未挂载本地目录 |
powershell
# docker ps |
powershell
使用curl命令访问容器 |
powershell
查看容器中/usr/share/nginx/html目录中目录或子目录 |
3.1.2 挂载本地目录
powershell
创建本地目录 |
powershell
向本地目录中添加index.html文件 |
powershell
运行web2容器,把/opt/wwwroot目录挂载到/usr/share/nginx/html目录中 |
powershell
查看容器IP地址 |
powershell
使用curl命令访问容器 |
3.1.3 未创建本地目录
powershell
运行web3容器,挂载未创建的本地目录,启动容器时将自动创建本地目录 |
powershell
往自动创建的目录中添加一个index.html文件 |
powershell
在容器中执行查看文件命令 |
3.2 volumes
3.2.1 创建数据卷
powershell
创建一个名称为nginx-vol的数据卷 |
powershell
确认数据卷创建后的位置 |
powershell
查看已经创建数据卷 |
powershell
查看数据卷详细信息 |
3.2.2 使用数据卷
powershell
运行web4容器,使用--mount选项,实现数据卷挂载 |
或
powershell
运行web4容器,使用-v选项,实现数据卷挂载 |
powershell
查看容器运行后数据卷中文件或子目录 |
powershell
使用curl命令访问容器 |
powershell
修改index.html文件内容 |
powershell
再次使用curl命令访问容器 |
3.3 bind mounts
powershell
创建用于容器挂载的目录web5root |
powershell
运行web5容器并使用bind mount方法实现本地任意目录挂载 |
powershell
查看已挂载目录,里面没有任何数据 |
powershell
添加内容至/opt/web5root/index.html中 |
powershell
使用curl命令访问容器 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 天天向上!
评论