0%

docker实践10:使用Volumes持久化数据

数据卷

宿主机的*/docker/redis-data*目录映射到容器的 /data目录

1
2
3
docker run  -v /docker/redis-data:/data \
--name r1 -d redis \
redis-server --appendonly yes

使用下面的语句可以向Redis实例中pipe数据

1
cat data | docker exec -i r1 redis-cli --pipe

在主机上可以查看映射的目录里有Redis的数据文件。

1
ls /docker/redis-data

同样的文件还可以挂在到第二个容器。其中一个应用就是用docker容器起到数据备份的作用。

1
docker run  -v /docker/redis-data:/backup ubuntu ls /backup

共享卷

使用*-volumes-from* 可以把源容器的映射的卷映射到目标容器上。

下面的例子,可以把redis容器的卷映射给Ubuntu容器。*/data仅在Redis容器上存在,但是因为-volumes-from*语句,Ubuntu容器也可以访问到数据。

1
docker run --volumes-from r1 -it ubuntu ls /data

这样,就可以访问其他容器的卷,而不必关心这个容器是如何跟主机持久化数据的。

只读卷

挂在卷会给容器对目录的全部的读取和写入权限。不过可以使用*:ro*命令来限制为只读权限。

如果容器试图修改数据会发生错误。

1
docker run -v /docker/redis-data:/data:ro -it ubuntu rm -rf /data

欢迎关注我的其它发布渠道