CodeGym /课程 /Docker SELF /将卷挂载到容器中

将卷挂载到容器中

Docker SELF
第 19 级 , 课程 2
可用

3.1 卷挂载基础

将卷(volumes)挂载到容器是 Docker 的核心功能之一,它能让数据独立于容器之外保存,确保数据的长期存储和可访问性。卷可以用来实现多种目的,比如存储配置文件、数据库、日志以及其他重要数据。在这节课里,我们会学习如何将卷挂载到容器并提供实际的例子。

卷挂载基础

卷,就像我们之前提到的,是独立于容器生命周期之外存在的。它们被保存在主机机器上的特定目录中,可以连接到任何容器。

挂载卷的命令

使用参数 -v--mount 在启动容器时可以将卷挂载到容器。

3.2 参数 -v

-v 参数的使用示例

1. 将volume挂载到容器中

创建一个volume并将其挂载到容器中:

创建volume:

Terminal

docker volume create my_volume

运行一个挂载了volume的容器:

Terminal

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

在该示例中,volume my_volume 被挂载到容器 my_container 的目录 /app

2. 挂载多个volume

你可以将多个volume挂载到一个容器中:

Terminal

docker run -d --name my_container -v volume1:/app/data -v volume2:/app/logs nginx

在该示例中,volume volume1 被挂载到目录 /app/data,而volume volume2 被挂载到目录 /app/logs

3.3 参数 --mount

参数 --mount 提供了更详细的卷挂载方法,可以指定各种参数。

1. 使用 --mount 挂载卷

Terminal

docker run -d --name my_container --mount source=my_volume,target=/app nginx

这个例子和之前用 -v 的例子类似,但语法更详细。

2. 挂载时添加额外参数

Terminal

docker run -d --name my_container --mount source=my_volume,target=/app,readonly nginx

在这个例子中,卷以只读模式挂载 (readonly)。

3.4 实际案例

案例 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

在这个例子中,PostgreSQL 数据库的数据会保存在卷 db_data 中。

案例 2: 为配置文件使用卷

创建一个卷来存储配置文件并将其挂载到容器中。

创建卷:

Terminal

docker volume create config_data

将配置文件复制到卷中:

Terminal

docker run --rm -v config_data:/app busybox sh -c "echo 'configuration data' > /app/config.txt"

启动使用配置文件卷的容器:

Terminal

docker run -d --name my_app -v config_data:/app/config nginx

在这个例子中,配置文件保存在卷 config_data 中,该卷被挂载到容器的目录 /app/config 中。

案例 3: 容器日志

创建一个卷来存储容器日志并将其挂载到容器中。

创建卷:

Terminal

docker volume create logs_data

启动带有日志卷的容器:

Terminal

docker run -d --name my_app -v logs_data:/var/log/nginx nginx

在这个例子中,Nginx 的日志保存在卷 logs_data 中。

3.5 检查卷的内容

你可以通过将卷挂载到一个临时容器中来检查卷的内容。

示例

运行挂载卷的临时容器:

Terminal

docker run --rm -v my_volume:/app busybox ls /app

这个示例会显示卷 my_volume 的内容。

删除卷

删除不再使用的卷。

示例

删除卷:

Terminal

docker volume rm my_volume

如果卷被容器使用,Docker 会报错。请确保使用该卷的容器已停止并被删除。

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