哈特中尉's Blog

不会写代码的司机不是好厨师!

docker搭建mysql环境

使用网易docker镜像
https://c.163.com/

1.拉取mysql镜像

1
2
$ docker pull hub.c.163.com/library/mysql:5.7.17
$ docker images #查看是否拉取成功

2.启动mysql镜像

1
2
3
$ docker run -e MYSQL_ROOT_PASSWORD=123456  hub.c.163.com/library/mysql:5.7.17

$ docker run -p 3306:3306 --name mymysql -v $PWD/conf/my.cnf:/etc/mysql/my.cnf -v $PWD/logs:/logs -v $PWD/data:/mysql_data -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.6
  • -p 3306:3306:将容器的3306端口映射到主机的3306端口
  • -v $PWD/conf/my.cnf:/etc/mysql/my.cnf:将主机当前目录下的conf/my.cnf挂载到容器的/etc/mysql/my.cnf
  • -v $PWD/logs:/logs:将主机当前目录下的logs目录挂载到容器的/logs
  • -v $PWD/data:/mysql_data:将主机当前目录下的data目录挂载到容器的/mysql_data
  • -e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码

$ docker run –name mysql -v /home/iyannik0215/Dropbox/DataDir:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=你的密码 -d mysql:latest
简单的讲讲这些命令。

命令 参数
run 运行容器。
–name 命名容器,如果不命名会是一长串的 Hash 值,不美观。
-v 数据卷存储,如果不存储容器关闭后数据会全部销毁。将本地的某个文件夹,映射到容器的文件夹。
-p 端口映射,将本地的3306端口映射到容器中的3306,感觉数据库就在本地一样,
-e 设置变量值,在此处设置了数据库root的密码,很多变量可以自己设置,具体访问 https://hub.docker.com
-d 后台运行

http://blog.csdn.net/ownfire/article/details/50274335

http://blog.opskumu.com/docker.html
系统 用户-权限
确保 container 用户uid 与host一致 mysql:mysql uid:999
确保 拥有读写权限
应用
mysql版本是否一致 ,是否与mariadb混用
配置文件是否正确
删除日志 错误文件.
如果还有问题,那么重新初始化一个数据库
docker
挂载路径是否正确? 仔细检查
mysql
mysql -S /var/run/mysqld/mysqld.sock -uroot -p 重新指定sock链接

检测容器

1
docker status

3.停止镜像

1
$ docker stop af92caefd33d # af92caefd33d 为 CONTAINER ID