MySql的镜像,默认状况下,MySql5.7中的sql_mode含有only_full_group_by,group by语句有时候会报错。经过手动修改sql_mode,那么若是删除容器或者新建容器,就会致使咱们手动设置的sql_mode失效,因此本身制做一个基于mysql镜像的镜像,解决sql_mode含有only_full_group_by的问题。mysql
运行容器sql
List-1docker
mjduan@mjduan:/opt % docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD --name mysql1 mysql:5.7.9 5514c31a4e0bc524cee3cdcb962ac73b4fdeb1b5b32d70fa2840e9029b203a8c
进入容器安装vimvim
List-2bash
mjduan@mjduan:/opt % docker exec -ti mysql1 /bin/bash #在容器内执行以下命令 root@44504961189a:/opt % apt-get update ...... root@44504961189a:/opt % apt-get install vim ......
在容器内,/etc/mysql/conf.d/下,新建.cnf文件,将配置写入到里面,咱们新建custom.cnf文件,写入以下内容:命令行
List-33d
root@44504961189a:/# more /etc/mysql/conf.d/custom.cnf [mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
退出容器,用docker commit命令由容器制做镜像,code
List-4get
mjduan@mjduan:/opt % docker commit mysql1 mysql_custom:1.0
以后docker images就能够看到镜像mysql_custom:1.0了。it
mysql_custom:1.0就是咱们须要的,用它来启动容器,以下List-5
List-5
mjduan@mjduan:/opt % docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=新密码 --name mysql_mjduan2 mysql_custom:1.0 44504961189a45442a6b33e5945778b73bc3dd058ab9e794c56b0bbfc3e603bf
以后进入容器mysql_mjduan2,用mysql命令进入mysql命令行时就会提示要root密码了。再次查看sql_mode,就会看到sql_mode没有only_full_group_by了。
注意,不要让别人拿到你的镜像,不然经过docker inspect命令就能够看到你设置的root密码。不过能够在建立容器的时候用MYSQL_ROOT_PASSWORD来设置新的root密码。
注:
也能够直接用Dockerfile基于mysql的镜像进行制做。