PS:使用的基础镜像是以基础镜像为centos7,mysql版本为5.7的镜像文件制作而成的中文环境的镜像,制作过程略,已经上传至个人共有仓库
下述所有密码均设置为ABCD123!
一、master机器
1.Dockerfile制作
FROM crpi-e84rsvaq3ocb16xd.cn-hangzhou.personal.cr.aliyuncs.com/yjlz/mysql::5.7-CN
RUN sed -ri '32i\server_id=1\ngtid_mode=ON\nenforce_gtid_consistency=1\nlog_bin=mylog' /etc/my.cnf && echo "grant replication slave,reload,super on *.* to slave@'%' identified by 'ABCD123!';" >> /docker-entrypoint-initdb.d/init.sql && echo "flush privileges;" >> /docker-entrypoint-initdb.d/init.sql
EXPOSE 3306
CMD ["mysqld"]
2.构建镜像文件
docker build -t mysql:matser-v1.0 .
3.容器启动
docker run -itd --name mysql_master --net host -e MYSQL_ROOT_PASSWORD=ABCD123! mysql:matser-v1.0
二、slave机器
1.Dockerfile制作
FROM crpi-e84rsvaq3ocb16xd.cn-hangzhou.personal.cr.aliyuncs.com/yjlz/mysql:5.7-CN
RUN sed -ri '32i\server_id=2\ngtid_mode=ON\nenforce_gtid_consistency=1\nrelay_log_info_repository=TABLE\nmaster_info_repository=TABLE' /etc/my.cnf
RUN echo "CHANGE MASTER TO master_host='192.168.89.148',master_user='slave',master_password='ABCD123!',master_auto_position=1;" >> /docker-entrypoint-initdb.d/init.sql
RUN echo "start slave;" >> /docker-entrypoint-initdb.d/init.sql
EXPOSE 3306
CMD ["mysqld"]
2.构建镜像文件
docker build -t mysql:slave-v1.0 .
3.容器启动
docker run -itd --name mysql_slave --net host -e MYSQL_ROOT_PASSWORD=ABCD123! mysql:slave-v1.0