点击学习开源企业 Docker 镜像仓库 Harbor 软件 教程。
在 Docker 中,数据卷(Volumes)是一种用于实现数据持久化和在容器之间共享数据的重要机制。
数据卷是一个可供一个或多个容器使用的特殊目录,它绕过了容器的联合文件系统(Union File System),直接在宿主机的文件系统中存储数据。这意味着数据卷中的数据独立于容器的生命周期,即使容器被删除,数据卷中的数据仍然存在。
数据持久性:数据卷中的数据在容器停止、删除或重新创建后仍然得以保留。这确保了重要数据不会因为容器的变化而丢失。
容器间共享:多个容器可以同时挂载同一个数据卷,从而实现数据的共享。这对于需要多个容器访问相同数据的场景非常有用,例如在分布式应用中共享配置文件、数据库数据等。
独立于容器文件系统:数据卷的存储不依赖于容器的文件系统,因此不会受到容器文件系统的限制。这使得数据卷可以存储大量数据,并且可以使用宿主机的文件系统工具进行管理和备份。
可移植性:数据卷可以在不同的宿主机和 Docker 环境之间轻松迁移,只要确保数据卷的路径在不同环境中保持一致。这使得在开发、测试和生产环境之间迁移数据变得更加容易。
数据库存储:将数据库的数据存储在数据卷中,可以确保数据在容器重启或删除后不会丢失。例如,对于一个 MySQL 数据库容器,可以将数据库文件存储在一个数据卷中,以便在容器出现问题时能够快速恢复数据。
配置文件共享:多个容器可以共享同一个配置文件目录,通过将配置文件存储在数据卷中,然后将数据卷挂载到不同的容器中,可以实现配置文件的统一管理和更新。
数据备份和恢复:由于数据卷独立于容器的生命周期,可以方便地对数据卷中的数据进行备份和恢复。可以使用宿主机的文件系统工具或第三方备份工具对数据卷进行定期备份,以防止数据丢失。
开发和测试环境:在开发和测试过程中,可以使用数据卷来共享代码和数据,使得不同的开发人员可以在各自的容器中访问相同的代码和数据,提高开发效率和协作能力。
在 Docker 中,docker volume 命令用于管理 Docker 卷,命令语法如下:
用法:docker volume COMMAND 管理数据卷 命令: create 创建一个卷 inspect 显示一个或多个卷的详细信息 ls 列出卷 prune 删除未使用的本地加密卷 rm 删除一个或多个加密卷 update 更新一个卷(仅限群集卷) 运行 “docker volume COMMAND --help” 获取更多命令信息。
使用 docker volume create 命令创建一个独立的数据卷:
root@hxstrive:~# docker volume create myvolume myvolume
在运行容器时使用 -v 或 --mount 参数来挂载数据卷:
(1)使用 -v 参数:
root@hxstrive:~# docker run --name nginx-test -p 8000:80 -v myvolume:/usr/share/nginx/html -d nginx 88ec95f399669c9dd2930ac92be938aba0a5045fc2c4f8783772b89e77f3d9f7
(2)使用 --mount 参数:
root@hxstrive:~# docker run --name nginx-test --mount source=myvolume,target=/usr/share/nginx/html -d nginx 60a6f63880da2de7d6cae307f10e50aa2b48bbc32a9d7e31af3b16c8097166d8
在上述命令中,启动了一个 nginx 容器,myvolume 是数据卷的名称,/usr/share/nginx/html 是容器内的挂载路径。
(1)查看数据卷:
使用 docker volume ls 命令可以列出所有的数据卷。
root@hxstrive:~# docker volume ls DRIVER VOLUME NAME local 4dd47a986c4f454b3687e9c7a22023ed4b34a9661bad3698de031988d9fbc472 local 6d74c9784f01caf4753278cd4fde72644282768538819d2867620c82f7617ea5 local 7d0027b8c80b5171fa64c8f0ce26634bed14aa921d78b66b42d422a09f3368c1 local 3136a16b31d8b1173c53d26d9b92c90b71582e8673cc4a2a464eb2ae4c77a3e3 local c7feaf981739979c906c07938f3cfcb4c7ba0d3ee0ae08eafe104359e5529dee local eb7379c6df64fe830d2ee83fd8b8228e653028a98d9934bc7425234d02d60909 local ec651aa19eb3cc7441cef7963610dc4cb0bf74f0ec4df5ae26104cc20f9e12df local f7f6172c178eda0698d1311d9832d163459a2cbbd7c4d6019dd7f91f237d7f4e local myvolume
(2)查看数据卷详情:
使用 docker volume inspect 命令可以查看特定数据卷的详细信息,包括数据卷的路径、创建时间等。
root@hxstrive:~# docker volume inspect myvolume [ { "CreatedAt": "2024-08-27T15:19:12+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/myvolume/_data", "Name": "myvolume", "Options": null, "Scope": "local" } ]
(3)删除数据卷:
当不再需要一个数据卷时,可以使用 docker volume rm 命令删除它。但要注意,只有当数据卷没有被任何容器使用时才能被删除。
root@hxstrive:~# docker volume rm myvolume myvolume
Docker 数据卷是一种非常有用的机制,它可以帮助实现数据的持久化、容器间的数据共享以及数据的可移植性。通过合理地使用数据卷,可以提高 Docker 应用的可靠性和可维护性。
点击学习开源企业 Docker 镜像仓库 Harbor 软件 教程。