1、查看镜像命令: docker images
2、搜索镜像命令: docker search imageName
3、拉取镜像命令: docker pull imageName
4、删除镜像命令: docker rmi imageNameCode
5、停止容器命令: docker stop containerCode
6、删除容器命令: docker rm containerCode
使用Docker创建多Mysql容器 --->
1、安装Docker-Compose
2、在任意文件夹下创建
1)/root/docker-compose-service/mysql/master/conf.d/mysql.cnf
2)/root/docker-compose-service/mysql/slave/conf.d/mysql.cnf
[mysqld] log-bin = mysql-bin server-id = 1 #master
[mysqld] log-bin = mysql-bin server-id = 2 #slave
3、返回到/root/docker-compose-service/mysql 创建docker-compose.yml
version: '3'
services:
master:
image: mysql
restart: always
container_name: mysql_master
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_ROOT_HOST: '%'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: gopan
MYSQL_REQUIRE_SECURE_TRANSPORT: '1'
MYSQL_SERVER_ID: 1ports:
- 13306:3306
volumes:
- /root/docker-compose-service/mysql/master/data:/var/lib/mysql
- /root/docker-compose-service/mysql/master/conf.d:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--server-id=999
--log-bin
--binlog-do-db=gopan;
networks:
- mysql_netslave:
image: mysql
restart: always
container_name: mysql_slave
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_ROOT_HOST: '%'
MYSQL_ALLOW_EMPTY_PASSWORD: 'no'
MYSQL_DATABASE: gopan
MYSQL_REQUIRE_SECURE_TRANSPORT: '1'
MYSQL_SERVER_ID: 2ports:
- 13307:3306
volumes:
- /root/docker-compose-service/mysql/slave/data:/var/lib/mysql
- /root/docker-compose-service/mysql/slave/conf.d:/etc/mysql/conf.d
- /etc/localtime:/etc/localtime:ro
command:
--default-authentication-plugin=mysql_native_password
--character-set-server=utf8mb4
--collation-server=utf8mb4_general_ci
--explicit_defaults_for_timestamp=true
--lower_case_table_names=1
--max_allowed_packet=128M
--server-id=1
--log-bin
--binlog-do-db=gopan
--relay-log
--relay-log-index=slave-relay-bin.index
--relay-log-info-repository=TABLE;
networks:
- mysql_net
networks:
mysql_net:
4、启动命令 --> 创建Docker容器 --> docker-compose up -d
5、进入Master --> docker exec -it <master_container_id> mysql -uroot -p
6、修改命令
CREATE USER 'repl'@'%' IDENTIFIED BY '123456';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;
7、SHOW MASTER STATUS; 状态 记录File 与 Position 值
8、进入Slave--> docker exec -it <slave_container_id> mysql -uroot -p
CHANGE MASTER TO
MASTER_HOST='YourIP',
MASTER_PORT=YourPort,
MASTER_USER='repl',
MASTER_PASSWORD='123456',
MASTER_LOG_FILE='刚才的File',
MASTER_LOG_POS=刚才的Position;
9、启动START SLAVE;
10、查看状态SHOW SLAVE STATUS;
11、这两个是Yes代表成功
外番篇 --->用docker创建多Mysql用这种方式不合适
Docker创建Mysql容器
1)、docker run -itd \ #固定
--name mysql5.7_1 \ #给你的Mysql镜像起个名字
-p 3306:3306 \ #给个端口 服务器端口与容器端口
-e MYSQL_ROOT_PASSWORD=root \ #设置密码
mysql:5.7 \ #你的镜像的名字 or 使用imageNameCode
--lower_case_table_names=1 --max_connections=151 #忽略大小写和最大连接数
2)、启动容器: docker start containerNameCode
3)、登录容器: docker exec -it containerNameCode /bin/bash
4)、mysql -uYourUsername -pYourPassword
5)、开启远程命令:GRANT ALL PRIVILEGES ON *.* TO 'YourUsername'@'%' IDENTIFIED BY 'YourPassWord'; #带好分号要不然进入mysql内部了
6)、刷新命令:flush privileges; #带好分号要不然进入mysql内部了
7)、进入Mysql内部退出命令:Ctrl + C -> 退出Mysql命令 quit or exit -> 退出容器命令exit
参考文档:
https://blog.youkuaiyun.com/weixin_44585288/article/details/131986536
问题一、启动一直是restart状态 删除YML中的MYSQL_USER即可。
https://blog.youkuaiyun.com/m0_73129504/article/details/130689686
问题一、SELECT plugin FROM `user` where user = 'repl';查询报错
user没有制定数据库,修改为mysql.user即可