您现在的位置是:亿华云 > 系统运维
如何在Docker中部署MySQL数据库?
亿华云2025-10-09 01:31:08【系统运维】0人已围观
简介Docker为部署和测试应用程序和数据库提供了许多优势,这些应用程序和数据库是应用程序不可或缺的一部分,因此很值得学习如何在Docker容器中部署和运行数据库。本文中,我们会重点关注如下重点:为MyS
Docker为部署和测试应用程序和数据库提供了许多优势,部署这些应用程序和数据库是据库应用程序不可或缺的一部分,因此很值得学习如何在Docker容器中部署和运行数据库。部署
本文中,据库我们会重点关注如下重点:
为MySQL Docker容器创建Docker Compose YAML文件。部署
使用各种方法连接到在容器上运行的据库MySQL数据库。
在Docker容器中创建并运行多个MySQL版本。部署
接下来,据库我们会逐一介绍这些。部署
1.为MySQL Docker容器创建Docker Compose YAML文件
首先,据库我们创建一个目录——db-docker,部署然后在这个目录中创建一个文件——docker-compose.yml。据库
mkdir db-docker cd db-docker touch docker-compose.yml基本上,部署在这里,据库我们将指定我们将要使用的部署服务并设置与这些服务相关的环境变量。
我们将在本文中多次更改此文件。
在我们刚刚创建的docker-compose.yml文件中添加以下内容:
version: 3 services: mysql-development: image: mysql:8.0.17 environment: MYSQL_ROOT_PASSWORD: helloworld MYSQL_DATABASE: testapp ports: - "3308:3306"我们将MySQL容器的名称指定为mysql-development,要使用的Docker镜像是mysql:8.0.17。 如果不将tag指定为8.0.17,则将采用最新的tag。
接下来我们需要指定的是环境变量,即用户,网站模板密码和数据库。 如果您未指定用户,则默认情况下它将为root。
我们将使用helloworld作为密码,使用testapp作为数据库。
另一个重要的是端口映射。 3308:3306表示在端口3306的容器中运行的MySQL映射到端口3308的主机的本地主机。您也可以使用不同的端口。
现在,在创建.yml文件之后,我们需要在.yml文件所在的同一目录中运行以下命令:
docker-compose up这将拉取Docker镜像(如果镜像在本地不存在,它将从Docker Hub拉出)然后运行容器。
我们可以通过如下命令查看状态:
docker-compose ps
这将显示容器的名称,命令和容器的状态,例如,它显示容器正在运行。 它还显示了端口映射。
在下一步中,我们将连接到此MySQL容器并运行一些命令。
2.连接到Container中运行的MySQL数据库
我们将讨论在Docker容器中运行的MySQL上连接和运行SQL命令的两种方法。云服务器提供商
第一种方法是使用像MySQL Workbench这样的工具(也可以使用DataGrip)。
现在我们得MySQL容器映射到宿主机得端口为3308,我们可以使用如下配置参数连接:

由于端口映射,只能通过宿主机的端口3308进行连接。
如果我们想连接到容器化的MySQL,不通过映射端口,即来自在同一个Docker网络上运行的另一个应用程序,我们必须使用像Adminer这样的工具,这是我们的另一种方法。
Adminer是一个基于PHP的Web应用程序,用于访问数据库。
现在,我们将在docker-compose.yml文件中添加另一项服务——Adminer。 但是,在我们进行更改之前,我们需要停止运行容器并使用以下命令将其删除:
docker-compose down让我们在docker-compose.yml文件中添加以下内容:
version: 3 services: mysql-development: image: mysql:8.0.17 environment: MYSQL_ROOT_PASSWORD: helloworld MYSQL_DATABASE: testapp ports: - "3308:3306" admin: image: adminer ports: - "8080:8080"现在,我们再次启动Docker 容器:
docker-compose up运行此操作后,将拉取Adminer的镜像,并启动MySQL和Adminer的容器。
我们可以使用docker-compose ps检查状态。源码库
现在,我们可以访问我们的浏览器并转到localhost:8080 来访问Adminer。 由于Adminer运行在与MySQL相同的Docker网络上,它可以通过端口3306(或简单地通过容器名称)访问MySQL容器。
注意:我们无法在Adminer中通过端口3308访问MySQL容器,因为这将尝试访问Docker Compose网络的端口3308,而不是宿主机上的3308端口。

我们还可以在MySQL命令行界面中输入以下命令:
docker-compose exec mysql-development mysql -uroot -phelloworld testapp3.在Docker容器中创建并运行MySQL的
version: 3 services: mysql-development: image: mysql:8.0.17 environment: MYSQL_ROOT_PASSWORD: helloworld MYSQL_DATABASE: testapp ports: - "3308:3306" admin: image: adminer ports: - "8080:8080" mysql-old: image: mysql:5.7.27 environment: MYSQL_ROOT_PASSWORD: helloworld MYSQL_DATABASE: coolapp ports: - "3309:3306"总结
上述是个简单得MySQL容器化小案例。希望给大家带来点启发。
很赞哦!(84376)
上一篇: 什么样的邮箱才是安全的电子邮件地址?
下一篇: 小白注册网站域名该怎么办?有什么步骤?
相关文章
- 互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
- 一个 1 分钟就学会的 vue 小技巧(真的一看就会)
- 用同事电脑登了一次百度账号,搜索框就被他用Python监控了
- 为什么不推荐使用try-catch-finally处理Java异常?
- 3.dns修改成功后,点击“域名解析”,按提示进行操作。解析格式一般如下:
- Mvvm模式和在Wpf中的实现之一Mvvm模式简介
- 初学者友好!10个有趣且易上手的AI项目(附Python源代码)
- 聊聊JVM基础,快进来复习复习吧
- 四、一定要仔细阅读细节
- 前端也要懂编译:Babel 全景上手指南
热门文章
站长推荐
CNAME:对应解析的记录值为域名地址
文件目录发生了增删改操作?Java如何实时监控?
为什么 Promis 比setTimeout()更快?
如何正确使用 Scrapy 自带的 FilesPipeline?
其次,一般域名注册有一个获取密码的按钮,域名注册商点击后会向您发送密码。在得到域名注册商发送的密码后,将其传输到域名服务提供商网站,然后输入密码,此时域名呈现申请状态。提交申请后,原注册人通常会向您发送一封电子邮件,询问您是否同意转让。此时,您只需点击同意转移按钮,域名注册商就可以成功转移。
我是如何使用Wireshark软件的
用分布式数据库后性能提高50%,为何还是放弃了?
如何在 ASP.NET Core 中写出更干净的 Controller