把MySQL放进Docker,总共需要几步?

把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.7SQLdatabaseserver75
mysql/mysql-clusterExperimentalMySQLClusterDockerimages. Cr…68
centurylink/mysqlImagecontainingmysql. Optimizedtobelink…61 [OK]
deitch/mysql-backupREPLACED!Pleaseusehttp://hub.docker.com/r… 41 [OK]
bitnami/mysqlBitnamiMySQLDockerImage39 [OK]
tutum/mysqlBasedockerimagetorunaMySQLdatabasese…35
schickling/mysql-backup-s3BackupMySQLtoS3 (supportsperiodicbackup…30 [OK]
prom/mysqld-exporter27 [OK]
linuxserver/mysqlAMysqlcontainer, broughttoyoubyLinuxSe…25
centos/mysql-56-centos7MySQL5.6SQLdatabaseserver19
circleci/mysqlMySQLisawidelyused, open-sourcerelation…19
databack/mysql-backupBackupmysqldatabasesto...anywhere!17
mysql/mysql-routerMySQLRouterprovidestransparentroutingbe…15
arey/mysql-clientRunaMySQLclientfromadockercontainer14 [OK]
openshift/mysql-55-centos7DEPRECATED: ACentos7basedMySQLv5.5image…6
fradelg/mysql-cron-backupMySQL/MariaDBdatabasebackupusingcrontas…6 [OK]
genschsa/mysql-employeesMySQLEmployeeSampleDatabase5 [OK]
devilbox/mysqlRetaggedMySQL, MariaDBandPerconaDBoffici…3
ansibleplaybookbundle/mysql-apbAnAPBwhichdeploysRHSCLMySQL2 [OK]
jelastic/mysqlAnimageoftheMySQLdatabaseservermainta…1
widdpim/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: request canceled (Client.Timeout exceeded while awaiting headers)

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

修改源的方法:

vim/etc/docker/daemon.json
/* 添加如下内容 */
{
"registry-mirrors": ["http://hub-mirror.c.163.com""https://registry.docker-cn.com"]
}

使用阿里云镜像需要自己登录到阿里云,配置后复制自己的地址再使用,需要的小伙伴可以联系我获取指引。

2.3 查看已下载的镜像

[root@c7_2 containers]# docker image  ls   #  或使用 docker images 查看
REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest a7a67c95e831 7 days ago 541MB hello-world latest bf756fb1ae65 4 months ago 13.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 -u root -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.129
mysql: [Warning] Usingapasswordonthecommandlineinterfacecanbeinsecure.
WelcometotheMySQLmonitor. Commandsendwith ; or \g.
YourMySQLconnectionidis11
Serverversion: 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主要就这几步。不过其中修改数据库配置文件等相关内容本次来不及细说,有兴趣的同学可以自行测试,相对也必将简单,可以在启动的时候指定。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/251813.html<

(0)
运维的头像运维
上一篇2025-04-29 03:53
下一篇 2025-04-29 03:54

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注