docker部署MySQL

把MySQL放进Docker,总共需要几步?本次就通过社区版容器安装2个mysql实例,看一下部署有多简单。

1、 安装docker

操作系统我使用的Centos7 x64系统,而Docker 目前看仅CentOS 7 及以上版本。本次采用Docker 仓库进行安装 ,具体步骤如下:

1.1 设置仓库

因本机首次安装 Docker,所以需要先设置 Docker 仓库,以后的安装可以直接从仓库安装。

 /* 安装所需的软件包 */ yum install -y yum-utils \ device-mapper-persistent-data \ lvm2

使用以下命令来设置稳定的仓库

yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo

1.2 安装Docker Engine-Community

安装最新版本的 Docker Engine-Community 和 containerd

 yum install docker-ce docker-ce-cli containerd.io

如果配置了多个 Docker 仓库,而且在 yum install 或 yum update 命令中未指定版本时,则会安装或更新最新版本的包,如果对稳定性 或版本有要求,则安装时一定要指定特定版本。

1.3 启动docker

经过上述安装后,启动docker服务即可

systemctl start docker

1.4 测试docker 部署是否成功

可以运行经典的hello-world 来测试

docker部署MySQL插图

可见docker已部署成功并可以正常运行。

2、 部署MySQL

2.1 查看可用的mysql镜像

docker search mysql

docker部署MySQL插图1

2.2 部署最新版本mysql

拉取最新版本mysql,不指定版本默认拉取最新版

 docker pull mysql 

docker部署MySQL插图2

注: 拉取镜像的时候容易出现如下超时错误

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)

建议修改国内镜像地址,例如修改为网易或阿里云的镜像地址(我采用的是个人阿里镜像的方式, 下载速度很理想,基本一分钟内下载完毕)

修改源的方法:

vim /etc/docker/daemon.json 

正确的内容

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

使用阿里云镜像需要自己登录到阿里云,配置后复制自己的地址再使用。

2.3 查看已下载的镜像

docker image ls # 或使用 docker images 查看 

docker部署MySQL插图3

2.4 运行mysql容器

 docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Admin@123 mysql 9f6668b5d0292b30308cfc5c6a6b88a34c4d62d9e5c70dff9bfce9f090117968

docker部署MySQL插图4

其中主要参数说明如下:

  • –name 后面配置容器名
  • -p代表端口映射, 格式为 宿主机映射端口:容器运行端口
  • -e代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码
  • 最后的mysql代码容器镜像名

启动成功后

注:手动启动

docker run -di -p 3306:3306 -e MYSQL_ROOT_PASSWORD=Admin@123 mysql

2.5 进入mysql容器

指定进入mysql容器中

 docker exec -it mysql /bin/bash 

在容器内登录mysql

 mysql -u root -p'Admin@123'

结果见如下截图,可以看到部署的是最新的MySQL8.0.20版本

docker部署MySQL插图5

注: MySQL8.0 用户的加密组件做了变更,低版本客户端登录会报错。处理的方式有多种,主要的方式有2种:

  • 修改对应用户的密码加密方式
  • 升级客户端或驱动

具体方式可参考 MySQL8.0用户登录那些事

2.6 再部署一个mysql5.7的容器

上面部署的是最新版mysql8.0.20,想部署5.7版本该如何部署?其实就是拉取镜像的时候指定选择MySQL5.7版本的即可。具体步骤如下:

拉取mysql5.7版本镜像

docker pull centos/mysql-57-centos7 Using default tag: latest latest: Pulling from centos/mysql-57-centos7 d8d02d457314: Pull complete a11069b6e245: Pull complete 596303fb1aa3: Pull complete a29499e779a7: Pull complete 17d1a52c2e00: Pull complete ed24591227fe: Pull complete de0ad46e3ed9: Pull complete c62e4a984a9c: Pull complete 01d54c6bda68: Pull complete Digest: sha256:e08ee4d43b7356607685b69bde6335e27cf20c020f345b6c6c59400183882764 Status: Downloaded newer image for centos/mysql-57-centos7:latest docker.io/centos/mysql-57-centos7:latest

docker部署MySQL插图6

运行mysql5.7的docker

docker run -di -p 3307:3306 -e MYSQL_ROOT_PASSWORD=Admin@123 centos/mysql-57-centos7

docker run -di --name=mysql5.7 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=Admin@123 centos/mysql-57-centos7

docker部署MySQL插图7

不进入容器,在本地或其他机器上登录mysql5.7

 /usr/local/mysql5.7/bin/mysql -uroot -p'Admin@123' -P3307 -h 192.168.28.129 mysql: [Warning] Using a password on the command line interface can be insecure. Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 11 Server version: 5.7.24 MySQL Community Server (GPL) Copyright (c) 2009-2019 Percona LLC and/or its affiliates Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> select version(); +-----------+ | version() | +-----------+ | 5.7.24 | +-----------+ 1 row in set (0.01 sec) mysql> 

docker exec -it mysql /bin/bash

mysql -uroot -p'Admin@123' -P3307

docker部署MySQL插图8

可以看到 该版本为MySQL 社区版的5.7.24

2.7 查看正在运行的docker

查看一台机器上运行的docker信息可以通过 docker ps 命令查看

docker部署MySQL插图9

本地端口信息如下

docker部署MySQL插图10

3、结语

将MySQL放进docker主要就这几步。不过其中修改数据库配置文件等相关内容本次来不及细说,有兴趣的同学可以自行测试,相对也必将简单,可以在启动的时候指定。

原文链接:https://blog.csdn.net/eagle89/article/details/105970743?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522a76386790a6524b7429d21db057df18d%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=a76386790a6524b7429d21db057df18d&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-13-105970743-null-null.nonecase&utm_term=%E7%BB%BF%E8%81%94nas

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享