02-docker之数据卷

数据卷

如果我启动一个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是否存在

实验3:启动一个centos指定一个目录挂在到宿主机

你可能感兴趣的:(02-docker之数据卷)