Ubuntu16.04 + docker + MySQL 避坑指南
马蛋!!!!
本来不想写这一篇!!!
但在ubuntu上安装docker+mysql,没有看指南来就被坑了一个下午!!
还是记录一下吧!
正确流程
本硬件、软件配置如下:
Server:阿里云
OS:Ubuntu
拉取image
sudo docker pull mysql:8.0.23
确认拉取成功
sudo docker images | grep mysql
创建用于挂载的目录
mkdir -p ~/DishMysqlDir # 用于挂载mysql数据文件
# 这个项目只是我自己使用,因此就放在这里。
生成并运行容器
sudo docker run --name DishMysql -p 13306:3306 -v ~/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxxxx -d mysql:8.0.23 --character-set-server=utf8 --collation-server=utf8_general_ci
其中:
- –name ——你的容器的名字
- -p 13306:3306 ——进行端口映射,前者为实体机的端口,后者为容器里的端口
- -v dir1:/var/lib/mysql ——挂载宿主目录到容器目录,前者为实体机的目录,后者为容器里mysql的目录
- -e ——设置环境变量,此时指定root密码
- -d ——守护进程模式运行,可以理解为使用哪一个image
- -character-set-server --collation-server ——字符集设置
新增内容
在你自定义的网段选取任意IP地址作为你要启动容器IP
--net docker-br0 --ip 172.172.0.10
带Gateway的容器
sudo docker run --name yournewname --network yournetname --ip 172.121.0.101 -p 13306:3306 -v /home/yourpath/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=xxx -d mysql:8.0.23 --character-set-server=utf8 --collation-server=utf8_general_ci
容器启动情况
这一步还是做一下比较好,我试过run后,容器的状态为EXIT。
查看要连接mysql的IP地址
这里使用127.0.0.1或localhost等,就是一个大坑,一直都连不上,跟window平台的不一样!!!!!
# 只获取IP
sudo docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' DishMysql
# 全部获取
sudo docker inspect DishMysql
连接mysql
mysql -hxxx.xxx.xxx.xxx -p3306 -uroot -p
或进入docker连接
sudo docker exec -it mysql5.7 mysql -uroot -p
或使用临时镜像链接MySql
sudo docker run -it --rm mysql:8.0.23 mysql -hxxx.xxx.xxx.xxx -uroot -p
不小心关了容器后——打开容器
sudo docker start DishMysql
不想使用时——停止容器
sudo docker stop DishMysql
不想使用时——删除容器
sudo docker rm DishMysql
不想使用时——删除image
sudo docker rmi mysql:8.0.23
2021年3月15日加入
假如你在宿主机安装mysql,项目在容器里。
记住:在宿主机是查看ip地址17.xxx.xxx.xxx那个。
ifconfig
然后项目连接宿主机的ip地址。