1、拉取镜像
docker image pull mysql:5.7
查看镜像
docker images
2、在docker主机上创建实例的文件夹
mkdir /home/sysdata/mysql/3306
mkdir /home/sysdata/mysql/3307
mkdir /home/sysdata/mysql/3308
换到 3307 文件夹下,创建存放配置的文件夹 conf 及存放配置的文件夹 data
mkdir conf data
conf 文件夹下添加
[mysqld]
pid-file=/var/run/mysqld/mysqld.pid
socket=/var/run/mysqld/mysqld.sock
datadir=/var/lib/mysql
server-id=1
symbolic-links=0
max_connections=100
connect_timeout=20
wait_timeout=6000
max_allowed_packet=512M
thread_cache_size=128
sort_buffer_size=4M
bulk_insert_buffer_size=16M
tmp_table_size=32M
max_heap_table_size=32M
#
# * MyISAM
#
# This replaces the startup script and checks MyISAM tables if needed
# the first time they are touched. On error, make copy and try a repair.
key_buffer_size=128M
table_open_cache=400
myisam_sort_buffer_size=512M
concurrent_insert=2
read_buffer_size=2M
read_rnd_buffer_size=1M
#
# * InnoDB
#
# InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
# Read the manual for more InnoDB related options. There are many!
default_storage_engine=InnoDB
innodb_buffer_pool_size=256M
innodb_log_buffer_size=128M
innodb_file_per_table=1
innodb_open_files=400
innodb_io_capacity=400
3、创建容器
docker run -d --name mysql3306 -p 3306:3306 -v /home/sysdata/mysql/3306/conf/:/etc/mysql/conf.d -v /home/sysdata/mysql/3306/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
4、查看运行状态
docker ps
5、进入mysql 容器,登陆并添加用户 开启权限
1、docker exec -it mysql3306 /bin/bash
2、mysql -uroot -p
3、grant all privileges on *.* to 'root'@'%' identified by '123456';
4、flush privileges;
6、退出mysql 容器,设置 docker 主机防火墙,对外暴露 3307 端口
// 添加暴露端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
// 重新加载防火墙
firewall-cmd --reload
// 查看端口是否暴露成功
firewall-cmd --list-ports