概述

Docker 有两种方式可以持久化数据,分别是 volumebind mount,当然,还有其他的方式,例如 Linux 下的 tmpfs 和 windows 下的 named pipe,但是都不是通用的,所以这里就不展开。这篇文章主要介绍一下 volumebind mount 的区别以及使用场景,并且对其中一些细节的东西拿出来说一下。

数据管理图

图 1:Docker 常用数据管理方式
From: https://docs.docker.com/storage/volumes/

使用入门

volume 使用

[root@liqiang.io]# docker volume create redis
[root@liqiang.io]# docker run -v redis:/data redis:6.0 redis-server

bind mount 使用

[root@liqiang.io]# docker run -v /myredis/conf:/usr/local/etc/redis redis redis-server

持久化方式选择

volume 使用场景

卷是在 Docker 容器和服务中持久化数据的首选方式。卷的一些使用场景包括:

bind mount 使用场景

一般来说,您应该尽可能地使用 volume。bind mount 适用于以下场景:

使用方式

无论是 volume 还是 bind mount,都可以通过 -v/--volume 或者 --mount 来使用,-v--mount 区别是:

额外提示

容器目录不为空

主机目录/volume 不存在

如果使用 -v 指定 volume 或者主机的目录,但是这个目录或者 volume 不存在,那么 docker 的操作是帮你创建一个:

Ref