Docker容器数据卷

92 阅读3分钟

容器数据卷

当今云计算和容器技术的飞速发展中,Docker成为了最受欢迎和广泛使用的容器技术。在Docker中使用容器数据卷是一种十分常见的技巧,那么什么是容器数据卷,为什么要用容器数据卷,容器数据卷有哪些特点,以及如何操作容器数据卷?

什么是容器数据卷

容器数据卷是Docker中的一个特性,它允许我们在容器中创建一个与主机文件系统中的指定目录进行映射的目录。这样,容器就可以访问主机文件系统中的文件,同时这些文件也可以在容器和主机之间进行共享,以便容器之间可以共享和传递数据。

容器数据卷的好处

1. 数据持久化

容器数据卷可以使得容器中的数据持久化,即使容器被删除,数据仍然可以保存在主机文件系统中。这可以避免数据丢失的问题,并且使得容器之间可以共享数据。

2. 数据共享

容器数据卷可以在多个容器之间共享数据,因为它们都可以访问主机文件系统中的同一数据卷。这使得容器在处理共享数据时更加灵活。

3. 数据备份

使用容器数据卷可以方便地备份应用程序数据,因为数据存在于主机上。这使得数据备份更加简单和快速,而不必依赖于容器本身。

4. 数据迁移

使用容器数据卷可以简化数据迁移的过程,因为数据可以轻松地从一个主机上的容器迁移到另一个主机上的容器。这使得应用程序的部署和移植更加简单。

使用数据卷

使用命令挂载

docker run -it -v 主机目录:容器目录

docker run -it -v /home/datavloume/home:/home centos bash

## 查看   docker inspect 容器id 

image.png

实战:安装MySQL

# 获取镜像 
docker pull mysql:5.7
# 运行容器,做数据挂载
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

# -d 后台运行
# -p 端口映射
# -v 卷挂载
# -e 环境配置
# --name 容器名字

连接测试 image.png

具名和匿名挂载

# 匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx

# 查看所有的volume的情况
[root@MiWiFi-R4A-srv ~]# docker volume ls
DRIVER    VOLUME NAME
local     4be5aec08e6a7cd972707b1bf17fa9023aec3a6c0d9b52f3cbb851e6e7671f7c

# 具名挂载
-v 卷名:容器内路径
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx

[root@MiWiFi-R4A-srv ~]# docker volume ls
DRIVER    VOLUME NAME
local     juming-nginx
查看卷
docker volume inspect juming-nginx

image.png 我们通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用具名挂载

# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载
-v 容器内路径            #匿名挂载
-v 卷名:容器内路径       #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载

读写权限

# 通过 -v 容器内路径:ro rw 改变读写权限
ro readonly  #只读
rw readwrite #可读可写

# 默认rw
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx:rw nginx

共享数据卷

docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx nginx

docker run -d -P --name nginx04 --volumes-from  nginx
# 两个容器数据同步