🍀 前言
博客地址:
👋 简介
在本章节中,将深入探讨 Docker 数据卷的概念,以及数据卷的使用。
📖 正文
1 什么是数据卷
1.1 Docker数据卷的介绍
Docker 容器是 Docker 平台上运行的轻量级、独立且可移植的软件包,用于打包应用程序及其所有依赖项、配置和运行时环境。容器化技术使得应用程序能够在一个隔离的环境中运行,而不会受到底层操作系统和硬件的影响。容器是从 Docker 镜像创建的实例,类似于对象是从类创建的实例。每个容器都是相互隔离的、独立运行的进程,具有自己的文件系统、进程空间和网络接口。容器之间相互隔离,不会相互干扰,因此可以在同一主机上同时运行多个容器,每个容器都可以承载一个独立的应用程序。
1.2 Docker数据卷的特点
- 数据持久化:数据卷允许容器中的数据在容器被删除或重新创建时仍然保留。这对于需要持久化存储的应用程序非常重要,例如数据库或文件存储服务。
- 数据共享:多个容器可以通过挂载相同的数据卷来实现数据共享。这使得容器之间可以方便地共享配置文件、日志文件、静态资源等。
- 数据备份和恢复:数据卷可以在容器之间进行备份和恢复,使得数据迁移和容器迁移变得更加简单和可靠。
- 数据卷插件扩展:Docker 提供了丰富的第三方数据卷插件,可以将数据存储到不同的后端存储系统中,如云存储、网络存储、分布式文件系统等。
1.3 Docker容器数据保存地方
/var/lib/docker/volumes
若容器运行时未指定数据卷,Docker创建容器时会使用默认是匿名卷,名称一般为很长的一串ID
2 数据卷(volume)的使用
2.1 创建数据卷
docker volume create 数据卷名称
2.2 查询数据卷
docker volume ls
2.3 查看数据卷信息
docker volume inspect 数据卷名称
2.4 运行容器时挂载数据卷
方式一:通过使用-v
实现挂载
docker run -d -it --name=test-nginx -p 80:80 -v test-vol:/usr/share/nginx/html nginx:1.13.12
参数说明:
-d
: 后台运行容器;--name=test-nginx
: 指定容器名为 test-nginx;-p 8090:80
:将容器的 80 端口挂载到宿主机的 8090 端口;-v test-vol:/usr/share/nginx/html
:将 test-vol 数据卷挂载到容器中的 /usr/share/nginx/html 目录上;nginx:1.13.12
:指定要运行的 Docker 镜像的名称和版本。
方式二:通过使用--mount
实现挂载
docker run -d -it --name=test-nginx -p 8090:80 --mount source=test-vol,target=/usr/share/nginx/html nginx:1.13.12
参数说明:
--mount source=test-vol,target=/usr/share/nginx/html
:将 test-vol 数据卷挂载到容器中的 /usr/share/nginx/html 目录上;
-v
和 --mount
有什么区别
都是挂载命令,使用 -v
挂载时,如果宿主机上没有指定文件不会报错,会自动创建指定文件;当使用 --mount
时,如果宿主机中没有这个文件会报错找不到指定文件,不会自动创建指定文件。
2.5 删除数据卷
docker volume rm 数据卷名称
对于没有被使用的数据卷,通过命令docker volume prune
进行清除
✏ 总结
无论是命名卷还是绑定挂载,数据卷都可以在容器的生命周期内保持持久化,即使容器被删除或重新创建,数据也不会丢失。这使得数据卷成为存储应用程序数据的理想选择,同时提供了更好的灵活性和可扩展性。