通过官方Mysql镜像并修改配置文件并重新打包新镜像步骤
官方的docker容器均采用默认的配置,如果直接拿来使用,有些配置不太适合我们使用,比如最大连接数,缓存,character编码等,因此需要在官方的基础上修改好配置变成自己合适的,后续就可以通过改造后的镜像就直接使用了,现记录过程如下。
1.拉取镜像
docker pull mysql:5.7.36
2.启动镜像
docker run -itd --name mysql_5.7.36 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.36
3.准备配置文件
cat > my.cnf << EOF
[client]
default-character-set=utf8mb4
[mysql]
port = 3306
default-character-set=utf8mb4
[mysqld]
port = 3306
default_storage_engine=InnoDB
datadir = /var/lib/mysql
character-set-client-handshake = FALSE
character-set-server=utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect='SET NAMES utf8mb4'
max_connections = 2000
max_allowed_packet = 128M
innodb_file_per_table = 1
tmp_table_size = 134217728
max_heap_table_size = 134217728
lower_case_table_names=1
log-bin = mysql-bin
max_binlog_size = 1024M
expire_logs_days = 1
log_slave_updates = 1
server-id = 1
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
EOF
4.将修改后的配置文件拷回去
##docker cp my.cnf 容器名称或容器id:/etc/my.cnf
docker cp my.cnf d9437146d6b3:/etc/my.cnf
5.进入容器确认文件已拷进去
docker exec -it d9437146d6b3 /bin/bash
cat /etc/my.cnf
exit
6.停止容器
docker stop d9437146d6b3
7.将修改好的容器打包成新镜像以供后续使用
docker commit -a "mysql5.7.36" -m "sendi_mysql_5.7.36" d9437146d6b3 sendi_mysql:5.7.36
8.重新以新镜像启动一个容器
docker run -itd --name mysql_5.7.36 -e MYSQL_ROOT_PASSWORD=123456 -p 13306:3306 sendi_mysql:5.7.36
9.测试
mysql -uroot -p123456 -h127.0.0.1 -P13306 -A