docker的hub中的mysql 5.7官方镜像可以直接运行,但是数据库文件及错误日志默认是存放在docker image中的,删除container后,数据库中的数据将丢失。使用如下命令行可以完美解决该问题:
docker run -p 3306:3306 \
--name mysql \
--restart=always \
-v /root/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 \
--log-error=/var/lib/mysql/error.log \
--log-error-verbosity=2
说明:
-p 3306:3306 把container的3306端口映射到宿主机的3306端口
---name mysql 指定container名称
--restart=always 重启机器后自动启动容器
-v /root/mysql/data:/var/lib/mysql 将宿主机的 /root/mysql/data目录映射到容器的/var/lib/mysql目录,后者正是存储数据库文件的位置
-e MYSQL_ROOT_PASSWORD=123456 设置数据库的root密码
-d 后台运行
--log-error=/var/lib/mysql/error.log 设置错误日志文件,同数据库在同一个位置
--log-error-verbosity 设置错误日志的等级,只记录错误信息及警告信息