回顾
「3个场景快速上手Docker容器技术」
简介
在讲Docker管理测试数据前,先给大家讲一讲Docker容器数据持久化的概念,可以帮助大家更好地理解:
Docker容器的数据存储在数据层,如果删除容器,数据也会被清除,达不到我们需要管理测试数据的效果,那我们可以怎么做呢?
见上图,Docker提供了3种持久数据的方式:
- 「volumes」:存于主机文件系统中的某个区域,由Docker管理。非Docker进程不应该修改这些数据。卷是Docker中持久化数据的最好方式
- 「bind mount」:存于主机文件系统中的任意位置。非Docker进程可以修改这些数据
- 「tmpfs mount」:存于内存中(注意,并不是持久化到磁盘)。在容器的生命周期中,它能被容器用来存放非持久化的状态或敏感信息
操作步骤
下面以mysql数据库作为例子讲解测试数据管理的方法:
- 拉取mysql数据库镜像:
# 当然也可以直接运行镜像,当本地没有这个镜像的时候会自动拉取 docker pull mysql
- 运行mysql容器时,以volumes(卷)的形式将主机目录挂载为mysql数据和配置目录:
# -v使用2次,分别指定mysql数据库配置和数据对应的主机目录 docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql
- 开始你的测试(包括修改数据库);
- 退出容器,此时我们得到mysql数据的第一个版本。我们可以在本地备份、分发;
- 若需要以此数据为基础数据,复制一份出来,启动容器时使用-v参数将复制后的路径挂载到容器即可。
总结
Docker管理测试数据主要是利用Docker数据持久化功能来实现的,容器启动时使用-v参数挂载主机目录即可。
常用命令
# 命令打包服务镜像 docker build # 命令提交镜像的修改 docker commit # 命令运行镜像 docker run # 参数的应用 docker run -p -v