.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分钟都用不上就可以搞定。

posted @ 2022-12-13 15:18  流氓大菠萝  阅读(124)  评论(0编辑  收藏  举报