CodeGym /课程 /Docker SELF /Docker 中数据存储基础

Docker 中数据存储基础

Docker SELF
第 19 级 , 课程 0
可用

1.1 卷 (Volumes)

在Docker中存储数据是一项重要任务。容器本身是临时的,这意味着容器内的数据在停止或删除容器后会丢失。为了在多次启动之间保存数据并确保其长期存储,Docker提供了两种主要技术:卷 (volumes) 和绑定目录 (bind mounts)。

卷 (Volumes)

卷是由Docker管理的数据存储资源。它们独立于容器的生命周期存在,可以用于长期存储数据。卷可以被创建和管理,这提供了一种方便的方式来在容器之外存储数据。

使用卷的好处

  1. 与主机隔离: 卷存储在主机上由Docker管理的专用目录中,确保其隔离性。
  2. 易于管理: Docker 提供了方便的命令来创建、删除和管理卷。
  3. 兼容性和可移植性: 卷可以很容易地在不同的主机之间移动,并与不同的容器一起使用。

创建和使用卷的示例

创建卷:

Terminal

docker volume create my_volume

在容器中使用卷:

在这个例子中,卷 my_volume 被挂载到容器 my_container 内的目录 /data

Terminal

docker run -d --name my_container -v my_volume:/data nginx

1.2 绑定目录 (Bind Mounts)

绑定目录允许将主机的特定目录挂载到容器中。这让容器能使用主机上的文件和目录,这在开发和测试中尤其有用,当需要处理本地文件时能显得很方便。

使用绑定目录的优势:

  1. 直接访问主机文件: 容器可直接使用主机上的文件和目录。
  2. 开发方便: 开发者可以轻松修改主机上的文件,并实时在容器中看到这些变化。
  3. 灵活性: 绑定目录可以是主机上的任意目录,为数据管理提供了更大的灵活性。

绑定目录的使用示例

启动绑定目录的容器:

Terminal

docker run -d --name my_container -v /path/on/host:/data nginx

在这个示例中,主机上的目录 /path/on/host 被挂载到容器 my_container 内的目录 /data 中。

卷 (Volume) 与绑定目录的对比:

特性 绑定目录
数据存储 由 Docker 管理 由用户管理
隔离性 与主机的文件系统隔离 使用主机的文件系统
性能 针对 Docker 优化 依赖主机的文件系统
适用场景 长期数据存储 开发和测试

1.3 实践案例

使用的实践例子

例子 1: 使用卷存储数据库

为了保证数据库数据的持久化存储,可以使用卷。

创建卷:

Terminal

docker volume create db_data

使用卷运行数据库容器:

Terminal

docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v 
db_data:/var/lib/postgresql/data postgres

例子 2: 为Web开发使用绑定目录

在开发Web应用时,可以使用绑定目录,使得本地文件的更改可以立即反映到容器中。

使用绑定目录运行容器:

Terminal

docker run -d --name web_dev -v $(pwd)/my_website:/usr/share/nginx/html nginx

在这个例子中,当前工作目录 my_website 挂载到容器 nginx 的目录 /usr/share/nginx/html 中。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION