Docker:服务容器和卷
Docker 为容器化应用程序提供了一个强大的框架,了解其卷管理系统是有效处理数据存储的关键。在本文中,我们将通过实际示例详细探讨 Docker 如何管理卷和服务容器。
什么是 Docker 卷?
Docker 中的卷用于保存 Docker 容器生成和使用的数据。与依赖主机文件系统的绑定挂载不同,卷由 Docker 直接管理,从而提供清晰的抽象并与容器生态系统更好地集成。
Docker Volumes的主要特点:
存储位置:卷存储在由 Docker 管理的主机文件系统的一部分中(例如
/var/lib/docker/volumes/)。由 Docker 管理:容器创建和管理卷,提供无缝体验。
弹性:即使容器被移除后卷仍然存在,从而确保数据的持久性。
易于使用:可以使用 Docker 命令轻松创建和操作卷。
使用卷
创建卷
要创建新卷,请使用以下命令:
docker volume create <NAME>
例如,创建一个名为的卷mysql-db:
docker volume create mysql-db
上市卷
要列出所有可用卷,请运行:
docker volume ls
此命令显示 Docker 管理的所有卷。
检查卷
要查看有关特定卷的详细信息,请使用:
docker volume inspect <NAME>
例如:
docker volume inspect mysql-db
删除卷
要删除卷,请使用:
docker volume rm <NAME>
注意:当使用卷的容器被销毁时,卷不会被删除。您需要明确删除它们。
在容器中使用卷
拉取 MySQL 镜像
首先,拉取 MySQL Docker 镜像:
docker pull mysql
使用匿名卷运行 MySQL
要运行具有匿名卷的 MySQL 容器:
docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True mysql
这里-e MYSQL_ALLOW_EMPTY_PASSWORD=True设置MySQL容器允许空的root密码。
使用命名卷运行 MySQL
要运行具有命名卷的 MySQL 容器,请指定源和目标:
docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True --mount source=mysql-db,target=/var/lib/mysql mysql
或者,您可以使用该-v标志:
docker container run -d --name mysql -e MYSQL_ALLOW_EMPTY_PASSWORD=True -v mysql-db:/var/lib/mysql mysql
在此示例中:
source=mysql-db指定卷名称。target=/var/lib/mysql指定容器内卷的挂载目录。
实践中的卷管理
创建卷:
docker volume create my-data
此命令创建一个名为 的新卷my-data。
使用卷运行容器:
docker container run -d --name my-app -v my-data:/app/data my-image
这里,my-data卷被安装到/app/data容器内部。
检查体积:
docker volume inspect my-data
删除卷:
docker volume rm my-data
此命令删除该my-data卷。
使用 Docker 卷的优点
数据持久性:即使容器被销毁后,卷也能确保数据保持完整。
易于共享:多个容器可以共享相同的容量,使其成为协作工作流程的理想选择。
性能:与绑定挂载相比,卷提供更好的 I/O 性能。
安全性:卷由 Docker 管理,提供主机文件系统的抽象层。

