02-docker之数据卷
2022-04-29 本文已影响0人
cjxz
数据卷
如果我启动一个redis数据库,然后添加了很多key和value,假设突然宕机。我的数据就全部不见了,当再次通过redis的镜像启动时,之前的key-value肯定都丢失了,所以我们需要一个方式将容器的数据和宿主机的目录映射起来。当操作redis的某些文件时,可以直接在宿主机上面看到对应的数据。这就是数据卷
1.解决什么问题
有些容器在使用过程中需要将数据持久化宿主机上面,以备后面重启容器可以加载已经存在的数据
2.使用什么方式增加数据卷
docker run -it -v /宿主机绝对路径:/容器内目录 镜像名
-v就是添加数据卷
3.两个对比实验
实验1:未使用数据卷启动redis
1.拉取redis镜像
docker pull redis
2.启动redis镜像
docker run -it redis
3.使用redis-cli连接redis
1.查询redis容器的id
docker ps -a
2.使用exec在指定容器中执行redis-cli
docker exec -it 9111 redis-cli
3.设置一些键值对
set a a
4.退出redis-cli和redis
5.再次启动redis和redis-cli查看是否存在a
docker run -it redis
docker ps -a
docker exec -it b1ba443dfc8e redis-cli
127.0.0.1:6379> get a
(nil)
实验2:使用数据卷的方式启动redis
1.启动redis
docker run -p 6379:6379 -v /root/myredis/data:/data -v /root/myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
2.使用redis-cli添加一些键值对
由于有端口映射,所以可以直接在宿主机上面执行redis-cli
然后使用set a a
然后关闭客户端
3.重启redis
使用docker stop 容器id
使用docker start 容器id
4.检查2中添加的键值对是否存在
直接在宿主机上面执行redis-cli验证2中的key是否存在