把MySQL放进Docker,总共需要几步?本次就通过社区版容器安装2个mysql实例,看一下部署有多简单。
1、 安装docker
操作系统我使用的Centos7 x64 系统,而Docker 目前看仅CentOS 7 及以上版本。本次采用Docker 仓库进行安装 ,具体步骤如下:
1.1设置仓库
因本机首次安装 Docker,所以需要先设置 Docker 仓库,以后的安装可以直接从仓库安装。
/*安装所需的软件包*/yuminstall-yyum-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
yuminstalldocker-cedocker-ce-clicontainerd.io
这一步有的包下载可能比较慢,要耐心等待,如果失败再重新执行几遍。
如果有同学配置了多个 Docker 仓库,而且在 yum install 或 yum update 命令中未指定版本时,则会安装或更新最新版本的包,如果对稳定性 或版本有要求,则安装时一定要指定特定版本。
1.3 启动docker
经过上述安装后,启动docker服务即可
systemctlstartdocker
1.4 测试docker 部署是否成功
可以运行经典的hello-world 来测试
可见docker已部署成功并可以正常运行。
2、 部署MySQL
2.1 查看可用的mysql镜像
[root@c7_2local]#dockersearchmysql NAMEDESCRIPTIONSTARSOFFICIALAUTOMATED mysqlMySQLisawidelyused,open-sourcerelation…9453[OK] mariadbMariaDBisacommunity-developedforkofMyS…3415[OK] mysql/mysql-serverOptimizedMySQLServerDockerimages.Create…691[OK] centos/mysql-57-centos7MySQL5.7SQLdatabaseserver75mysql/mysql-clusterExperimentalMySQLClusterDockerimages.Cr…68centurylink/mysqlImagecontainingmysql.Optimizedtobelink…61[OK] deitch/mysql-backupREPLACED!Pleaseusehttp://hub.docker.com/r…41[OK]bitnami/mysqlBitnamiMySQLDockerImage39[OK] tutum/mysqlBasedockerimagetorunaMySQLdatabasese…35schickling/mysql-backup-s3BackupMySQLtoS3(supportsperiodicbackup…30[OK] prom/mysqld-exporter27[OK] linuxserver/mysqlAMysqlcontainer,broughttoyoubyLinuxSe…25centos/mysql-56-centos7MySQL5.6SQLdatabaseserver19circleci/mysqlMySQLisawidelyused,open-sourcerelation…19databack/mysql-backupBackupmysqldatabasesto...anywhere!17mysql/mysql-routerMySQLRouterprovidestransparentroutingbe…15arey/mysql-clientRunaMySQLclientfromadockercontainer14[OK] openshift/mysql-55-centos7DEPRECATED:ACentos7basedMySQLv5.5image…6fradelg/mysql-cron-backupMySQL/MariaDBdatabasebackupusingcrontas…6[OK] genschsa/mysql-employeesMySQLEmployeeSampleDatabase5[OK] devilbox/mysqlRetaggedMySQL,MariaDBandPerconaDBoffici…3ansibleplaybookbundle/mysql-apbAnAPBwhichdeploysRHSCLMySQL2[OK] jelastic/mysqlAnimageoftheMySQLdatabaseservermainta…1widdpim/mysql-clientDockerizedMySQLClient(5.7)includingCurl…0[OK] monasca/mysql-initAminimaldecoupledinitcontainerformysql0
2.2 部署最新版本mysql
拉取最新版本mysql,不指定版本默认拉取最新版
[root@c7_2local]#dockerpullmysql Usingdefaulttag:latest latest:Pullingfromlibrary/mysql 54fec2fa59d0:Pullcomplete bcc6c6145912:Pullcomplete 951c3d959c9d:Pullcomplete 05de4d0e206e:Pullcomplete 319f0394ef42:Pullcomplete d9185034607b:Pullcomplete 013a9c64dadc:Pullcomplete 42f3f7d10903:Pullcomplete c4a3851d9207:Pullcomplete 82a1cc65c182:Pullcomplete a0a6b01efa55:Pullcomplete bca5ce71f9ea:Pullcomplete Digest:sha256:61a2a33f4b8b4bc93b7b6b9e65e64044aaec594809f818aeffbff69a893d1944 Status:Downloadednewerimageformysql:latest docker.io/library/mysql:latest
注: 拉取镜像的时候容易出现如下超时错误
Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceled(Client.Timeoutexceededwhileawaitingheaders)
建议修改国内镜像地址,例如修改为网易或阿里云的镜像地址(我采用的是个人阿里镜像的方式, 下载速度很理想,基本一分钟内下载完毕)
修改源的方法:
vim/etc/docker/daemon.json/*添加如下内容*/
{"registry-mirrors":["http://hub-mirror.c.163.com","https://registry.docker-cn.com"]
}
使用阿里云镜像需要自己登录到阿里云,配置后复制自己的地址再使用,需要的小伙伴可以联系我获取指引。
2.3 查看已下载的镜像
[root@c7_2containers]#dockerimagels#或使用dockerimages查看 REPOSITORYTAGIMAGEIDCREATEDSIZEmysqllatesta7a67c95e8317daysago541MBhello-worldlatestbf756fb1ae654monthsago13.3kB
2.4 运行mysql容器
[root@c7_2local]#dockerrun-di--name=mysql-p3306:3306-eMYSQL_ROOT_PASSWORD=Admin@123mysql 9f6668b5d0292b30308cfc5c6a6b88a34c4d62d9e5c70dff9bfce9f090117968
其中主要参数说明如下:
- --name 后面配置容器名
- -p代表端口映射, 格式为 宿主机映射端口:容器运行端口
- -e代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的登陆密码
- 最后的mysql代码容器镜像名
启动成功后
2.5 进入mysql容器
指定进入mysql容器中
[root@c7_2local]#dockerexec-itmysql/bin/bash root@9f6668b5d029:/#
在容器内登录mysql
root@9f6668b5d029:/#mysql-uroot-p'Admin@123'
结果见如下截图,可以看到部署的是最新的MySQL8.0. 20 版本
注: MySQL8.0 用户的加密组件做了变更,低版本客户端登录会报错。处理的方式有多种,主要的方式有 2 种:
- 修改对应用户的密码加密方式
- 升级客户端或驱动
具体方式可参考MySQL8. 0 用户登录那些事
2.6 再部署一个mysql5. 7 的容器
上面部署的是最新版mysql8.0.20,想部署5. 7 版本该如何部署?其实就是拉取镜像的时候指定选择MySQL5. 7 版本的即可。具体步骤如下:
拉取mysql5. 7 版本镜像
[root@c7_2local]#dockerpullcentos/mysql-57-centos7 Usingdefaulttag:latest latest:Pullingfromcentos/mysql-57-centos7 d8d02d457314:Pullcomplete a11069b6e245:Pullcomplete 596303fb1aa3:Pullcomplete a29499e779a7:Pullcomplete 17d1a52c2e00:Pullcomplete ed24591227fe:Pullcomplete de0ad46e3ed9:Pullcomplete c62e4a984a9c:Pullcomplete 01d54c6bda68:Pullcomplete Digest:sha256:e08ee4d43b7356607685b69bde6335e27cf20c020f345b6c6c59400183882764 Status:Downloadednewerimageforcentos/mysql-57-centos7:latest docker.io/centos/mysql-57-centos7:latest
运行mysql5. 7 的docker
dockerrun-di--name=mysql5.7-p3307:3306-eMYSQL_ROOT_PASSWORD=Admin@123centos/mysql-57-centos7
不进入容器,在本地或其他机器上登录mysql5.7
[root@c7_2local]#/usr/local/mysql5.7/bin/mysql-uroot-p'Admin@123'-P3307-h192.168.28.129mysql:[Warning]Usingapasswordonthecommandlineinterfacecanbeinsecure. WelcometotheMySQLmonitor.Commandsendwith;or\g. YourMySQLconnectionidis11Serverversion:5.7.24MySQLCommunityServer(GPL) Copyright(c)2009-2019PerconaLLCand/oritsaffiliates Copyright(c)2000,2019,Oracleand/oritsaffiliates.Allrightsreserved. OracleisaregisteredtrademarkofOracleCorporationand/orits affiliates.Othernamesmaybetrademarksoftheirrespective owners. Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement. mysql>selectversion();+-----------+ |version()| +-----------+ |5.7.24| +-----------+1rowinset(0.01sec) mysql>
可以看到 该版本为MySQL 社区版的5.7.24
2.7 查看正在运行的docker
查看一台机器上运行的docker信息可以通过 docker ps 命令查看
本地端口信息如下
3、结语
将MySQL放进docker主要就这几步。不过其中修改数据库配置文件等相关内容本次来不及细说,有兴趣的同学可以自行测试,相对也必将简单,可以在启动的时候指定。
本文转载自微信公众号【数据库干货铺】。
(举报)