.net Core 系统 架构回忆录----Docker 部署MySql
为什么在docker中部署Mysql而不再Linux系统下直接部署:
1.docker安装快速,效率高;
2.docker隔离性好,可以安装无数个mysql实例,互相不干扰,只要映射主机端口不同即可;
3.占用资源少,MB级别,而服务器安装GB级别;
4.启动速度秒级,而服务器安装启动分钟级别;
5.性能接近原生,而服务器安装较低;
6.数据备份、迁移,docker更方便强大;
7.卸载管理更方便和干净,直接删除容器和镜像即可;
8.稳定性,只要保证docker环境没问题,mysql就没问题。
开发环境与测试环境搭得快,迁移也快,生产环境还是老老实实放到独立服务器或者用云数据库,好拓展,好维护。
镜像准备:
docker pull mysql:8.0
运行镜像:
docker run -d -p 3307:3306 --name mysql -e MYSQL_ROOT_PASSWORD=456987qwer mysql:8.0
解释一下这里的参数:
-d表示在后台运行,不随当前命令行窗口的退出而退出
--name给容器起一个别名,以后可以通过这个别名管理此容器
-p 3306:3307把宿主机的3307端口映射到Mysql容器的3306端口
-e MySQL容器的环境配置
查看已经启动得MySql容器:
使用命令:docker ps
我们可以使用docker inspect -f='{{.NetworkSettings.Networks.bridge.IPAddress}}' mysql 命令查看容器的ip,注意最后直接写要查看的容器的name即可
## 获取容器ID [root@centos ~]# docker inspect -f='{{.Id}}' mysql a7257e0aa9363f7a8778903898f977fda7496e30ca85512b89daa7ac517ee87c ## 获取容器名字 [root@centos ~]# docker inspect -f='{{.Name}}' mysql /mysql ## 获取容器创建时间 [root@centos ~]# docker inspect -f='{{.Created}}' mysql 2020-05-09T02:10:41.964421619Z ## 获取容器日志路径 [root@centos ~]# docker inspect -f='{{.LogPath}}' mysql /var/lib/docker/containers/a7257e0aa9363f7a8778903898f977fda7496e30ca85512b89daa7ac517ee87c/a7257e0aa9363f7a8778903898f977fda7496e30ca85512b89daa7ac517ee87c-json.log ## 运行平台 [root@centos ~]# docker inspect -f='{{.Platform}}' mysql linux ## 获取容器IP地址 [root@centos ~]# docker inspect -f='{{.NetworkSettings.Networks.bridge.IPAddress}}' mysql 172.18.0.4
额外讲一下删除容器
要删除镜像,先要删除依赖它的容器
1. 删除容器 docker ps #查看正在运行的容器 docker ps -a #查看所有容器 docker rm container_id #删除容器 2. 删除镜像 docker images //查看镜像 docker rmi image_id 2.1 删除其他镜像 # 删除 null image sudo docker rmi $(docker images -f "dangling=true" -q) #删除所有镜像 # 删掉容器 docker stop $(docker ps -qa) docker rm $(docker ps -qa) # 删除镜像 docker rmi --force $(docker images -q) # 删除名称中包含某个字符串的镜像 # 例如删除包含“some”的镜像 docker rmi --force $(docker images | grep some | awk '{print $3}')
把上次运行得hello-world删除
删除之前要停止
docker stop可以用来终止一个正在运行的容器。它的命令格式如下:
docker stop [OPTIONS] Container [Container …]
其中:
docker stop: Docker停止容器的命令关键词;
OPTIONS:命令选项,其中-t指定等待多少秒后如果容器还没终止,就强行停止,默认等待10秒;
Container:需要启动的容器,该容器用“容器ID”或“容器名”表示,如果指定了多个容器,那么就将这些容器都启动。
例如想要停止一个名为firstContainer 的容器,可以这么执行docker stop firstContainer。该命令执行完之后,firstContainer将会处于终止状态。而上一节我们谈到过,终止状态的容器,可以使用docker ps –a查看到
把刚刚装好得mysql顺手也删了,从新安装步骤省略
登录mysql
docker exec -it mysql bash
mysql -u root -p
查看表
show databases;
设置可以远程链接:
docker exec -it mysql /bin/bash # 进入mysql容器终端 mysql -uroot -proot # 如果提示密码错误 尝试不加密码 mysql -uroot use mysql; alter USER 'root'@'localhost' IDENTIFIED BY '你的密码'; update user set host = "%" where user='root'; flush privileges;
重点:如果是云服务器记得到策略组,或者是什么安全组中 添加对应端口,不然调到死都连不上!!!
现在链接工具看看
成功 到此 MySql在docker中部署就算完成了,熟练工10分钟都用不上就可以搞定。