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 版权协议,转载请附上原文出处链接和本声明。