3.1 卷挂载基础
将卷(volumes)挂载到容器是 Docker 的核心功能之一,它能让数据独立于容器之外保存,确保数据的长期存储和可访问性。卷可以用来实现多种目的,比如存储配置文件、数据库、日志以及其他重要数据。在这节课里,我们会学习如何将卷挂载到容器并提供实际的例子。
卷挂载基础
卷,就像我们之前提到的,是独立于容器生命周期之外存在的。它们被保存在主机机器上的特定目录中,可以连接到任何容器。
挂载卷的命令
使用参数 -v
或 --mount
在启动容器时可以将卷挂载到容器。
3.2 参数 -v
-v
参数的使用示例
1. 将volume挂载到容器中
创建一个volume并将其挂载到容器中:
创建volume:
docker volume create my_volume
运行一个挂载了volume的容器:
docker run -d --name my_container -v my_volume:/app nginx
在该示例中,volume my_volume
被挂载到容器 my_container
的目录 /app
2. 挂载多个volume
你可以将多个volume挂载到一个容器中:
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
挂载卷
docker run -d --name my_container --mount source=my_volume,target=/app nginx
这个例子和之前用 -v
的例子类似,但语法更详细。
2. 挂载时添加额外参数
docker run -d --name my_container --mount source=my_volume,target=/app,readonly nginx
在这个例子中,卷以只读模式挂载 (readonly
)。
3.4 实际案例
案例 1: 为数据库使用卷
创建和使用一个卷来存储数据库的数据。
创建卷:
docker volume create db_data
启动带有挂载卷的数据库容器:
docker run -d --name postgres -e POSTGRES_PASSWORD=mysecretpassword -v
db_data:/var/lib/postgresql/data postgres
在这个例子中,PostgreSQL 数据库的数据会保存在卷 db_data
中。
案例 2: 为配置文件使用卷
创建一个卷来存储配置文件并将其挂载到容器中。
创建卷:
docker volume create config_data
将配置文件复制到卷中:
docker run --rm -v config_data:/app busybox sh -c "echo 'configuration data' > /app/config.txt"
启动使用配置文件卷的容器:
docker run -d --name my_app -v config_data:/app/config nginx
在这个例子中,配置文件保存在卷 config_data
中,该卷被挂载到容器的目录 /app/config
中。
案例 3: 容器日志
创建一个卷来存储容器日志并将其挂载到容器中。
创建卷:
docker volume create logs_data
启动带有日志卷的容器:
docker run -d --name my_app -v logs_data:/var/log/nginx nginx
在这个例子中,Nginx 的日志保存在卷 logs_data
中。
3.5 检查卷的内容
你可以通过将卷挂载到一个临时容器中来检查卷的内容。
示例
运行挂载卷的临时容器:
docker run --rm -v my_volume:/app busybox ls /app
这个示例会显示卷 my_volume
的内容。
删除卷
删除不再使用的卷。
示例
删除卷:
docker volume rm my_volume
如果卷被容器使用,Docker 会报错。请确保使用该卷的容器已停止并被删除。
GO TO FULL VERSION