一个Docker面试题目
编写Dockerfile脚本编译镜像,运行容器后实现对现有 mysql 数据库做备份
环境信息:
- mysql数据库地址192.168.0.10 端口 6600 用户 testuser 密码 123456 需要备份的数据库为 testdb
- 需要在 192.168.0.11 服务器编写 dockerfile 脚本编译镜像,运行容器对上述 mysql 数据库做备份,dockerfile 以 alpine 为基础镜像编写,数据库备份文件请存放在 /var/mysqlbak 目录下并以日期命名
这里是Dockerfile脚本和实现步骤:
Dockerfile内容:
FROM alpine:latestRUN apk add --no-cache mysql-clientWORKDIR /var/mysqlbakENTRYPOINT mysqldump -u testuser -p123456 -h 192.168.0.10 --port 6600 testdb > $(date +%Y%m%d).sql
实现步骤:
- 在192.168.0.11服务器上创建Dockerfile文件,内容如上。
- 执行docker build -t mysql_backup . 构建镜像。
- 执行docker run -it mysql_backup运行容器。
- 容器启动后,会自动执行ENTRYPOINT中的命令。
- 该命令会使用mysql客户端连入指定的数据库服务器192.168.0.10,使用testuser和密码123456登录。
- 然后备份testdb数据库,并将备份文件名命名为日期,如20201231.sql。
- 备份文件会保存到容器内的/var/mysqlbak目录,也就是Dockerfile中指定的WORKDIR。
- 到此,testdb数据库的备份完成。可以通过docker cp命令将备份文件从容器内拷出。
- 以后每次运行该镜像的容器,都会自动完成testdb的备份,并命名为最新日期。
通过Dockerfile脚本和docker命令,实现了自动备份指定mysql数据库的功能。可以根据需要定期运行容器,完成数据库的备份工作。