Docker数据管理-容器数据卷

Docker数据管理-容器数据卷

文章目录

  • Docker数据管理-容器数据卷
    • 什么是容器数据卷
    • 使用数据卷
    • 安装mysql
    • 具名挂载和匿名挂载

什么是容器数据卷

数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多专用的特性:

  • 数据卷可以在容器之间共享和重用

  • 对数据卷的修改会立马生效

  • 对数据卷的更修不会影响镜像

  • 数据卷会一直存在知道没有容器使用

数据卷的使用类似于Linux下对目录或者文件进行mout操作。数据的持久化应该在本地服务器而不是在容器内。数据卷就可以实现目录的挂载,容器用于计算,数据回归本地存储!

Docker数据管理-容器数据卷_第1张图片

使用数据卷

使用命令进行挂载 -v

docker run -it -v #主机目录地址:容器目录地址
#测试
docker run -it  -v /home/test:/home centos /bin/bash
# 启动之后可以通过docker inspect 容器id查看容器的详细信息

Docker数据管理-容器数据卷_第2张图片

测试文件的同步
Docker数据管理-容器数据卷_第3张图片

安装mysql

#获取镜像
[root@VM-4-17-centos /]# docker pull mysql:5.7
# 运行容器并做数据挂载  安装启动mysql需要配置密码

-d 后台启动
-p 端口映射
-v 数据卷挂载
-e 环境配置
-- name 容器名称
[root@VM-4-17-centos home]# docker run -d -p 3336: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

#启动成功之后使用mysql连接工具进行连接

Docker数据管理-容器数据卷_第4张图片

#在本地测试新建一个test数据库,查看映射的路径是否正确

Docker数据管理-容器数据卷_第5张图片

在这里插入图片描述

#讲mysql容器彻底删除 再次进入mysql/data目录,test文件夹还是存在,即挂载到本地的数据卷依旧没有丢失
[root@VM-4-17-centos /]# docker rm -f mysql01

具名挂载和匿名挂载

所有的docker容器内的卷,没有指定目录的情况下都是在 目录。
Docker数据管理-容器数据卷_第6张图片

#如何区分是具名挂载还是匿名挂载
-v 容器内路径   			 #匿名挂载
-v 卷名:容器内路径    		#具名挂载
-v /宿主机路径:容器内路径   #指定路径挂载
#docker挂载的数据卷默认权限是读写(rw),用户也可以通过(ro)指定为只读,说明只能通过宿主机进行数据修改
[root@VM-4-17-centos /]# docker run -d -p --name nginx01 -v /home/nginx:/etc/nginx:ro nginx
#加了ro之后容器内挂载的数据卷的数据就无法修改了

你可能感兴趣的:(docker,docker,容器,运维)