Docker容器数据持久化存储机制
一、Docker容器数据持久化存储介绍
1、物理机或虚拟机数据持久化存储
由于物理机或虚拟机本身就拥有大容量的磁盘,所以可以直接把数据存储在物理机或虚拟机本地文件系统中,也可以通过使用额外的存储系统(NFS、GlusterFS、Ceph等)来完成数据持久化存储。
2、Docker容器数据持久化存储
由于Docker容器是由容器镜像生成的,所以一般容器镜像中包含什么文件或目录,在容器启动后,我们依旧可以看到相同的文件或目录。
由于Docker容器属于“用后即焚”型计算资源,因此Docker容器做数据持久化存储需挂载宿主机数据卷
二、Docker容器数据持久化存储方式
Docker提供三种方式将数据从宿主机挂载到容器中:
- docker run -v
运行容器时,直接挂载本地目录至容器中
- volumes
Docker管理宿主机文件系统的一部分(/var/lib/docker/volumes)
是Docker默认存储数据方式
- bind mounts
作用同docker run -v
- Docker容器数据持久化存储案例
- docker run -v
- 挂载本地目录
创建本地目录
# mkdir /opt/web1root
向本地目录中添加index.html文件
# echo 'web1-page' > /opt/web1root/index.html
运行web1容器,把/opt/web1root目录挂载到/usr/share/nginx/html目录中
# docker run -d --name web1 -v /opt/web1root/:/usr/share/nginx/html/ nginx:latest
使用curl命令访问容器
# curl http://容器ip
-
- 未创建本地目录(系统将自动创建)
运行web2容器,挂载未创建的本地目录,启动容器时将自动创建本地目录
# docker run -d --name web2 -v /opt/web2root/:/usr/share/nginx/html/ nginx:latest
往自动创建的目录中添加一个index.html文件
# echo "web2-page" > /opt/web2root/index.html
在容器中执行查看文件命令
# docker exec web2 cat /usr/share/nginx/html/index.html
使用curl命令访问容器
# curl http://容器ip
- Volumes数据卷
-
- 创建数据卷
创建一个名称为nginx-vol的数据卷
# docker volume create nginx-vol
确认数据卷创建后的位置
# ls /var/lib/docker/volumes/
查看已经创建数据卷
# docker volume ls
查看数据卷详细信息
# docker volume inspect nginx-vol
{
。。。
"Mountpoint": "/var/lib/docker/volumes/nginx-vol/_data",
"Name": "nginx-vol",
。。。
}
-
- 使用数据卷
运行web3容器,使用--mount选项,实现数据卷挂载
# docker run -d --name web3 --mount src=nginx-vol,dst=/usr/share/nginx/html nginx:latest
或
运行web3容器,使用-v选项,实现数据卷挂载
# docker run -d --name web3 -v nginx-vol:/usr/share/nginx/html/ nginx:latest
查看容器运行后数据卷中文件或子目录
# ls /var/lib/docker/volumes/nginx-vol/_data/
使用curl命令访问容器
# curl http://容器ip
修改index.html文件内容
# echo "web3-page" > /var/lib/docker/volumes/nginx-vol/_data/index.html
再次使用curl命令访问容器
# curl http://容器ip
- bind mounts(同docker run -v)
创建用于容器挂载的目录web4root
# mkdir /opt/web4root
运行web4容器并使用bind mount方法实现本地任意目录挂载
# docker run -d --name web4 --mount type=bind,src=/opt/web4root,dst=/usr/share/nginx/html nginx:latest
查看已挂载目录,里面没有任何数据
# ls /opt/web4root/
添加内容至/opt/web4root/index.html中
# echo "web4-page" > /opt/web5root/index.html
使用curl命令访问容器
# curl http://容器ip
更多推荐
所有评论(0)