Linux(CentOS)环境Docker容器中安装Mysql镜像

  • Post author:
  • Post category:linux




Linux(CentOS)环境Docker容器中安装Mysql镜像



1、Docker容器中安装Mysql

docker pull mysql  #如果使用docker pull mysql命令,就会下载最新的mysql镜像

docker pull mysql:5.7  #下载5.7版本的mysql


mysql镜像拉取成功:

[root@Silence /]# sudo docker pull mysql:5.7
5.7: Pulling from library/mysql
bf5952930446: Pull complete 
8254623a9871: Pull complete 
938e3e06dac4: Pull complete 
ea28ebf28884: Pull complete 
f3cef38785c2: Pull complete 
894f9792565a: Pull complete 
1d8a57523420: Pull complete 
5f09bf1d31c1: Pull complete 
1b6ff254abe7: Pull complete 
74310a0bf42d: Pull complete 
d398726627fd: Pull complete 
Digest: sha256:da58f943b94721d46e87d5de208dc07302a8b13e638cd1d24285d222376d6d84
Status: Downloaded newer image for mysql:5.7
docker.io/library/mysql:5.7


查看mysql镜像是否安装成功
#查看已安装的镜像
[root@Silence /]# sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.7                 718a6da099d8        11 days ago         448MB
[root@Silence /]# 



2、创建实例并启动Mysql

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

参数解释:

docker run 3306:3306 --name mysql\      #将容器3306端口映射到主机的3306端口 
-v /mydata/mysql/log:/var/log/mysql\    #将配置文件挂载到主机
-v /mydata/mysql/data:/var/lib/mysql\   #将日志文件挂载到主机
-v /mydata/mysql/conf:/etc/mysql\       #将配置文件挂载到主机
-e MYSQL_ROOT_PASSWORD=root\            #初始化root用户的密码为root
-d mysql:5.7                            #开机启动mysql


实例创建成功:

[root@Silence /]# docker run -p 3306:3306 --name mysql \
> -v /mydata/mysql/log:/var/log/mysql \
> -v /mydata/mysql/data:/var/lib/mysql \
> -v /mydata/mysql/conf:/etc/mysql \
> -e MYSQL_ROOT_PASSWORD=root \
> -d mysql:5.7
743df4fba2e9e58c7fb28d6a59ae3c64c7d98be1ca5f474f8a95b06e534554b7


查看Docker中正在运行的实例:

[root@Silence /]# docker ps    #查看Docker中正在运行的容器
#结果
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                               NAMES
743df4fba2e9        mysql:5.7           "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql


3、启动mysql:

docker start mysql



这一步执行完之后我们可以尝试用navicat等客户端工具远程连接mysql

如果你用的是阿里云服务器的话远程连接不上是因为你没有打开服务器的3306端口。



问题解决

因为我使用的是阿里云服务器,Mysql安装好之后远程连接失败,所以我们需要进入阿里云控制台打开3306端口的安全组。


进入阿里云管理控制后台—-云服务器ECS—-实例


在这里插入图片描述


然后点击实例的网络和安全组,进入之后点击快速添加


在这里插入图片描述


然后勾选mysql确认即可


在这里插入图片描述


配置好之后再次通过navicat连接,发现已经可以正常连接了。



4、Mysql配置:配置字符编码格式

新建一个my.cnf文件

vi mydata/mysql/conf/my.cnf    #mysql的文件路径已经映射到Linux中,所以我们在Linux中新增文件也会出现在mysql容器中
[client]
default-character-set=utf8

[mysql]
default-character-set=utf8

[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve

在my.cnf文件中添加以上代码,用来处理字符乱码问题。


保存好之后重启一下mysql

[root@Silence /]# docker restart mysql   #重启mysql
mysql
[root@Silence /]# 


查看mysql容器内部是否新增了刚刚创建的my.cnf文件。

[root@Silence /]# docker exec -it mysql /bin/bash
root@743df4fba2e9:/#             #成功进入mysql内部

root@743df4fba2e9:/# ls
bin  boot  dev	docker-entrypoint-initdb.d  entrypoint.sh  etc	home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@743df4fba2e9:/# cd etc/mysql/
root@743df4fba2e9:/etc/mysql# ls
my.cnf                              #发现我们刚刚新增的my.cnf文件已经存在。
root@743df4fba2e9:/etc/mysql# 


到目前为止我们的mysql就可以正常使用了。



版权声明:本文为nxw_tsp原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。