docker数据卷及数据卷容器
1、数据卷
数据卷:简称volume,用于docker容器内文件及数据的持久化。
持久化:在容器内创建的文件及数据仅在容器的生命周期内有效,当容器被删除后,文件及数据也随之丢失。持久化可以帮助把docker内部的文件及数据映射到本地,实现备份及与宿主机或其他容器交换文件。
数据卷的特点:
- 数据卷是宿主机中的一个目录或文件
- 当容器目录和数据卷目录绑定后,对方的修改会立即同步
- 一个数据卷可以被多个容器同时挂载
- 一个容器也可以挂载多个数据卷
配置数据卷
docker run ... –v 宿主机目录(文件):容器内目录(文件) ...
例如:
docker run -it --name ub1 -v /root/data:/root/data1 ubuntu:latest
注意事项:
- 目录必须是绝对路径
- 如果目录不存在,会自动创建
- 可以挂载多个数据卷
也可以将容器内运行应用的关键配置及数据配置持久化到本地,下次再启动新的容器的时候,通过挂载之前的持久化目录,就可以恢复上次容器内的数据及文件,以mysql为例:
docker run -itd -p 3306:3306 --name mysql -v /mydata/mysql/log:/var/log/mysql -v /mydata/mysql/data:/var/lib/mysql -v /mydata/mysql/conf/my.cnf:/etc/my.cnf -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
几个目录说明:
/var/log/mysql : mysql应用的运行日志
/var/lib/mysql: mysql应用的数据库及文件
/etc/my.cnf: mysql应用的配置文件
2、数据卷容器
主要应用场景:简化大量容器的数据同步问题
配置数据卷容器
step1: 使用-v /volume参数创建data_container
docker run -it --name data_container -v /volume ubuntu:latest /bin/bash
step2: 启动其他容器并挂在data_container
docker run -it --name ub1 --volumes-from data_container ubuntu:latest /bin/bash
docker run -it --name ub2 --volumes-from data_container ubuntu:latest /bin/bash